什么是阻塞方式“不做任何事”的正确方法是什么?

时间:2018-09-24 11:23:34

标签: python python-3.x

在某些情况下,我需要在程序结束时不执行任何操作而不退出程序。通常,我有永无休止的线程(由我控制或不控制)。

我使用几种解决方案:

time.sleep(1000000)
  • 专业版:简单的单线
  • 缺点:1000000秒是11天,必须估算脚本将运行多长时间,并最终无法估算
for thread in threading.enumerate():
    try:
        thread.join()
    except RuntimeError:
        # trying to join the main thread
        pass
  • 专业人士:看上去很干净
  • 缺点:仅适用于我控制线程的情况
while True:
    pass
  • 专业人士:我不知道,因为...
  • 缺点:无用的CPU占用量

是否有Python正确的方法来“以阻止方式执行任何操作”?

2 个答案:

答案 0 :(得分:2)

保持简单:

while True:
    time.sleep(1000000)

这解决了sleep()可能被中断的问题,并解决了程序运行数周的可能性。

它是便携式的,显而易见的且环保的!

答案 1 :(得分:2)

一个好的方法是等待输入。这不仅很简单,而且可以控制您何时继续或退出程序。

sys.stdin.readline()