有没有办法判断一个线程是否正常退出或由于异常?Python线程退出代码
9
A
回答
13
如前所述,围绕Thread类的包装可以捕获该状态。这是一个例子。
>>> from threading import Thread
>>> class MyThread(Thread):
def run(self):
try:
Thread.run(self)
except Exception as self.err:
pass # or raise
else:
self.err = None
>>> mt = MyThread(target=divmod, args=(3, 2))
>>> mt.start()
>>> mt.join()
>>> mt.err
>>> mt = MyThread(target=divmod, args=(3, 0))
>>> mt.start()
>>> mt.join()
>>> mt.err
ZeroDivisionError('integer division or modulo by zero',)
-1
如果成功,您可以将某些全局变量设置为0,如果出现异常,则可以将其设置为非零。这是一个非常标准的惯例。
但是,您需要使用互斥锁或信号量来保护此变量。或者你可以确保只有一个线程会写入,而其他线程只会读取它。
0
让你的线程函数捕获异常。 (你可以用一个简单的包装函数来做到这一点,它只需调用try
中的旧线程函数... except
或try
... except
... else
块)。那么问题就变成了“如何从一个线程传递信息到另一个线程”,我想你已经知道如何做到这一点。
相关问题
- 1. Python退出代码
- 2. Cudafy线程已退出,代码为259
- 3. 在Windows C++中退出代码线程
- 4. 获取python程序的退出代码
- 5. Python终止进程退出代码-1073741819
- 6. python runpy.run_module退出代码
- 7. 在Python中退出代码
- 8. python线程立即退出
- 9. Python,线程永不退出
- 10. 线程不退出python
- 11. python子进程退出意外退出代码-9
- 12. 程序退出代码-SomeNumber
- 13. 退出代码
- 14. 当父线程退出时,Python守护进程线程不会退出
- 15. Python返回“错误的”退出代码
- 16. Sikuli(Python) - 无理由退出代码
- 17. python退出消息和代码位置
- 18. 在Python中退出代码标准
- 19. SciTE中的Python退出代码-1073741819
- 20. Python线程捕捉异常并退出
- 21. 在python的keyboardInterrupt退出线程
- 22. python中的特定线程退出
- 23. 在python中退出一个线程?
- 24. JsHint退出代码
- 25. XulRunner退出代码
- 26. WinSCP退出代码
- 27. CL.exe退出代码
- 28. 如何在退出线程时执行代码
- 29. 线程在Windows窗体中用代码0退出
- 30. M2Mqtt库没有发布消息,线程退出代码259
0对于成功来说可能是一个非常标准的约定,但是在肉解释器上不会布尔型“成功”会更容易一些吗? – 2009-06-12 13:38:12