【发布时间】:2019-05-07 16:32:46
【问题描述】:
我将多个线程与子线程一起使用。现在我想停止父线程或等到父线程完成工作而不检查并停止所有子线程。 我的想法是用一个进程包装父线程,然后终止进程,这似乎终止了相应的父线程及其所有子线程。
def worker(conn):
#this is the class including the parent thread
xi = Test_Risk_Calc('99082')
#start working
xi.test()
#finished
print ('EVERYTHING IS DONE, BUT CHILD THREADS ARE STILL ALIVE')
conn.send('EXIT SEND')
return
def main():
parent_conn, child_conn = Pipe()
p = multiprocessing.Process(target=worker, args=(child_conn,))
p.start()
#wait for finished parent-thread
print(parent_conn.recv())
p.terminate()
p.join()
print('JOINED, PROCESS AND ALL ITS THREADS ARE TERMINATED')
return
我不确定这是否是解决问题的正确方法
【问题讨论】:
-
Python 中的线程是非常低级的,最好使用某种抽象来帮助正确处理这些事情。哪一个取决于您目前使用线程的原因
标签: python multithreading multiprocessing