【问题标题】:How do you start a function at a certain time in Python?如何在 Python 中的某个时间启动一个函数?
【发布时间】:2015-06-16 15:46:55
【问题描述】:

我有一个时间戳列表,当达到这些时间戳时,我需要调用特定的方法。这些时间戳大约相隔 20 毫秒。

目前我在一个单独的线程中使用忙等待,但我担心 CPU 过载。示例:

while True:
  if myTimestamp > time.time():
    mymethod()

或

while myTimestamp < time.time():
   time.sleep(0.1)
mymethod()

有没有更有效的方法呢? 谢谢

【问题讨论】:

  • 为什么不使用time.sleep(time.time() - myTimestamp)
  • 回答标题中的问题;你可以使用sleep_until() function。

标签: python multithreading events time conditional-statements


【解决方案1】:

有几种方法——有些方法比其他方法更容易移植到不同的操作系统。

一般来说,你可以做的是:

  1. 为每个任务生成一个新线程
  2. 在每个线程中,获取当前时间,剩余时间为time.sleep()

这行得通,但它不是非常准确。你可以使用 python 附带的sched 模块让你的生活更轻松(它基本上完成了我上面描述的,但可能更聪明一点)。

如果您需要微秒级精度(“硬”实时约束),python 不是首选工具。

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2021-06-11
    • 2016-11-27
    • 2019-05-23
    • 2020-04-19
    相关资源
    最近更新 更多