我通过python中的多处理和线程模块编写程序。我使用信号来处理终止进程和线程。它适用于Linux,但我在FreeBSD上遇到了问题。
我有一个创建其他流程的主流程:
pr = Process(target=myprocess, args=(queue,))
pr.start()
在myprocess
课程中我创建一个帖子:
tr = mythread(queue)
tr.start()
tr.join()
并使用信号终止进程和线程:
signal(SIGTERM, terminate)
def terminate(num, frame):
pr.terminate()
用于终止线程,我在myprocess
class:
signal(SIGTERM, terminate)
def terminate(num, frame):
tr.terminate()
在mythread
课程中我有terminate
这样的方法:
def terminate():
exit(0)
我在Unix上阅读了python中的sigmask,我测试了它,但它没有用。
我的进程没有收到SIGTERM
,也没有调用terminate
类的myprocess
方法来终止该帖子。
答案 0 :(得分:0)
我无法弄明白,但我用另一种方法来杀死这个过程。
我在一个文件中编写了进程pid,然后使用os.kill(pid, SIGKILL)
来终止进程。我将线程设置为守护进程,以便在父进程终止时终止。