在我的代码中启动了几个线程,我需要在脚本的末尾无限期地休眠,而不是这种睡眠对性能的重大影响1。在
一种可能的方法是用短暂的睡眠来无限循环:
while True:
time.sleep(1)
或者睡很长时间
^{pr2}$或者
import signal
signal.pause()
但是:
我没有找到睡眠所能接受的最大时间(sys.maxint
太大)
signal.pause()
仅在Unix中实现
第一个“睡眠循环”在我看来并不干净(为什么是1秒而不是10秒,或者0.1?)
有没有一种干净的Python式的方法可以无限期地入睡?
1我不直接控制线程,否则我会选择^{
^{} 提供所有正在运行的线程的列表,包括主线程,因此可以执行以下操作:
如果库在等待当前线程完成时创建新线程,则需要使用
while True
。在假设在} 和一个哨兵,结果是:
^{pr2}$enumerate
运行时没有创建线程,可以检查L
是否只有一个元素(主线程),如果是,则中断循环。这与Tadhg McDonald-Jensen的suggestion结合使用^{enumerate
以未定义的顺序返回一个列表,因此,如果您有多个“main”线程,顺序就开始重要了。解决方案是使用sets,即main_threads = {main_thread, }
和{如果您更喜欢请求原谅的EAFP方法,而不是请求许可,并且当您到达脚本末尾时,所有线程都将启动,您还可以执行以下操作:
相关问题 更多 >
编程相关推荐