Python中的实时中断

2024-04-29 06:51:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python 2.7程序运行一个无限while循环,我想合并一个计时器中断。 我的目标是在循环中的某个时刻设置计时器,当5秒过去后,我希望代码分支到while循环的特定部分。

到目前为止,我所做的是: 在while循环的每次迭代中,我使用

time.clock()

如果差异超过5,我运行我打算运行的代码块

然而,在我计算时间之前,7秒可能已经过去了,这将是5秒,但我想在5秒过去时准确地去那里

此外,我需要这个工作超过1个计数器(可能高达100),但我不希望中断相互打断。使用计时器也不起作用。

我知道这可以使用程序集中的计时器中断来完成,但在python中如何做到这一点呢?


Tags: 代码程序程序运行目标time分支时间计数器
2条回答

如果要处理单个事件,那么最简单的方法是使用signal框架,即standard module of Python

但是,如果我们需要一个成熟的调度程序,那么我们必须使用另一个模块:schedHere是指向官方文档的指针。不过,请注意,在多线程环境中,sched在线程安全方面有限制。

另一个选项是Advanced Python Scheduler,它不是标准发行版的一部分。

如果没有特殊的硬件/软件支持,就无法获得real-time。在大多数情况下(do you need to control giant robots?)都不需要它。

如何将多个函数调用延迟已知秒数取决于您的需要,例如,如果运行函数所需的时间与调用之间的延迟相比微不足道,则可以run all functions in a single thread

#!/usr/bin/env python
from __future__ import print_function
from Tkinter import Tk

root = Tk()
root.withdraw() # don't show the GUI window
root.after(1000, print, 'foo') # print foo in a second
root.after(0, print, 'bar') # print bar in a jiffy
root.after(2000, root.destroy) # exit mainloop in 2 seconds
root.mainloop()
print("done")

它实现了您的“我也不想中断彼此”,因为下一个回调在前一个回调完成之前不会被调用。

相关问题 更多 >