我有一个Python 2.7程序运行一个无限while循环,我想合并一个计时器中断。 我的目标是在循环中的某个时刻设置计时器,当5秒过去后,我希望代码分支到while循环的特定部分。
到目前为止,我所做的是: 在while循环的每次迭代中,我使用
time.clock()
如果差异超过5,我运行我打算运行的代码块
然而,在我计算时间之前,7秒可能已经过去了,这将是5秒,但我想在5秒过去时准确地去那里
此外,我需要这个工作超过1个计数器(可能高达100),但我不希望中断相互打断。使用计时器也不起作用。
我知道这可以使用程序集中的计时器中断来完成,但在python中如何做到这一点呢?
如果要处理单个事件,那么最简单的方法是使用
signal
框架,即standard module of Python。但是,如果我们需要一个成熟的调度程序,那么我们必须使用另一个模块:
sched
。Here是指向官方文档的指针。不过,请注意,在多线程环境中,sched
在线程安全方面有限制。另一个选项是Advanced Python Scheduler,它不是标准发行版的一部分。
如果没有特殊的硬件/软件支持,就无法获得real-time。在大多数情况下(do you need to control giant robots?)都不需要它。
如何将多个函数调用延迟已知秒数取决于您的需要,例如,如果运行函数所需的时间与调用之间的延迟相比微不足道,则可以run all functions in a single thread:
它实现了您的“我也不想中断彼此”,因为下一个回调在前一个回调完成之前不会被调用。
相关问题 更多 >
编程相关推荐