我的代码中启动了几个线程,我需要在脚本结束时无限期地休眠,而不会对性能造成重大影响1。
一种可能的方法是循环无限期并短暂休眠:
while True:
time.sleep(1)
或者长时间休眠。
time.sleep(4000000)
或者
import signal
signal.pause()
但是:
我无法找到最大时间睡眠可以接受的值(
sys.maxint
太大了)signal.pause()
仅在Unix中实现第一个“睡眠循环”对我来说看起来不太干净(为什么是1秒而不是10秒或0.1秒?)
有没有一种简洁、pythonic的方式无限制地睡眠?
1我不能直接控制线程,否则我会选择使用threading.Thread.join()
,因为线程本身不会结束。
client.loop_forever()
作为示例。 - Harveythreading.enumerate
可以获取包括主线程在内的所有正在运行的线程列表,因此您可以等待(使用join
)它们。 - Cristian Ciupituwhile True: i+= 1
这样的内容每秒会增加i
数百万 次,调用time.sleep(1)
会引入相对较小的开销,而根据您的粒度进行更长时间的休眠甚至会减少开销。 - chepner