python编程中线程结束的问题
发布网友
发布时间:2022-04-22 23:41
我来回答
共2个回答
热心网友
时间:2022-04-28 09:11
def _exitCheckfunc():
print "ok"
try:
while 1:
alive=False
if thread_.isAlive():
alive=True
if not alive:
break
time.sleep(1)
#为了使得统计时间能够运行,要捕捉 KeyboardInterrupt :ctrl-c
except KeyboardInterrupt, e:
traceback.print_exc()
print "consume time :",time.time()-start
threading._shutdown=_exitCheckfunc
自己在主线程中写一个死循环来接受ctrl+c的信号。
或者用进程监控 :
http://code.activestate.com/recipes/496735-workaround-for-missed-sigint-in-multithreaded-prog/
热心网友
时间:2022-04-28 10:29
有两个原因,
原因1:t线程在跑着 你t1.join(),如果t1是一个循环的线程,那么t要等到t1跑完在结束(不可能)
所以t1.joint(timeout=10),t等t1跑完或者未跑完等10s后继续跑
原因2:t.daemon=True表示主线程结束,它也结束,那么它主线程是否有结束?
还有一处不明:t1.join()意味着t等t1跑完后在继续跑,等你运行到t.join(10)的时候应该意味着t1已经跑完,为什么还有t.join(10)