Jarret Hardie已经提到过:根据Guido van Rossum的说法,到目前为止,还没有更好的方法:如文档中所述,join(None)
块(这意味着没有信号)。另一种选择- 超时(join(2**31)
大约)时进行调用并进行检查isAlive
看起来很棒。但是,Python处理计时器的方式是灾难性的,运行python测试程序时使用servth.join(100)
而不是可以看到servth.join()
:
select(0, NULL, NULL, NULL, {0, 1000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 2000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 4000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 8000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 16000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 32000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
--- Skipped 15 equal lines ---
select(0, NULL, NULL, NULL, {0, 50000}Killing