在我的程序中,我使用__exit__()
方法调用一个类作为来自from multiprocessing import Process
的进程。当主程序中出现错误时,我会执行myprocess.terminate()
,但这不会调用__exit__()
方法
如何在终止进程的同时调用__exit__
补充:
我有两个进程,当1被一个sys.exit()
终止时,我想退出其中的一个进程。
这是我现在做这件事的方法。在第1个进程中,我调用sys.exit()
,witch“停用进程”。在主流程中,我有一个如下所示的循环:
while True:
try:
None
except KeyboardInterrupt:
accelerationrecorder1_process.terminate()
datasaver_process.terminate()
sys.exit()
try:
if datasaver_process.is_alive() == False:
accelerationrecorder1_process.terminate()
sys.exit()
except:
sys.exit()
try:
if accelerationrecorder1_process.is_alive() == False:
datasaver_process.terminate()
sys.exit()
except:
sys.exit()
但是如果我在一个进程中调用sys.exit()
,另一个进程就不会执行退出
__exit__
神奇的方法不是你想象的那样。它并不意味着在程序退出之前调用,而是在您离开with块之前调用Here了解更多有关该问题的详细信息基本上,您不能有一个在进程终止时自动调用的方法。你必须手动调用它。但这仍然是可行的。可能在主函数的某个地方,您可以放置一个try语句来捕获应用程序的任何部分引发的任何异常(注意
sys.exit()
会引发一个SystemExit
异常,该异常将像其他异常一样被捕获),并在try块中添加finally子句,在该子句中,每当程序终止时,都会调用所需的每个方法。例如:记住实现一个
log_error
函数(或使用任何现有函数),否则调试将非常困难相关问题 更多 >
编程相关推荐