你如何用它的PID杀死多进程中的进程?
How do you kill a process in multi-processing with it's PID?
import multiprocessing as mp
def func():
the code inside func
for _ in range(10)
process = mp.Process(target=func)
process.start()
所以在上面写的代码中,我如何在需要时杀死每个进程?
您可能应该将进程保存在由进程 ID(pid
属性)键入的 dict
中以便快速查找。然后你可以在 Process
实例上调用 terminate
:
import multiprocessing as mp
def func():
...
process_dict = {}
for _ in range(10):
process = mp.Process(target=func)
process.start()
process_dict[process.pid] = process
...
# Kill a process given a pid:
# This also removes the key from the dictionary:
process = process_dict.pop(pid)
process.terminate()
...
# Wait for remaining processes to end:
for process in process_dict.values():
process.join()
假设 pid 属于您创建的进程之一(否则 pop
操作将引发 KeyError
异常。
以上代码假定您 运行 在使用 fork
创建新进程的平台下(例如 Linux),因此您不需要放置创建的代码if __name__ == '__main__':
块中的新进程。但是你真的应该用平台标记你的问题。
import multiprocessing as mp
def func():
the code inside func
for _ in range(10)
process = mp.Process(target=func)
process.start()
所以在上面写的代码中,我如何在需要时杀死每个进程?
您可能应该将进程保存在由进程 ID(pid
属性)键入的 dict
中以便快速查找。然后你可以在 Process
实例上调用 terminate
:
import multiprocessing as mp
def func():
...
process_dict = {}
for _ in range(10):
process = mp.Process(target=func)
process.start()
process_dict[process.pid] = process
...
# Kill a process given a pid:
# This also removes the key from the dictionary:
process = process_dict.pop(pid)
process.terminate()
...
# Wait for remaining processes to end:
for process in process_dict.values():
process.join()
假设 pid 属于您创建的进程之一(否则 pop
操作将引发 KeyError
异常。
以上代码假定您 运行 在使用 fork
创建新进程的平台下(例如 Linux),因此您不需要放置创建的代码if __name__ == '__main__':
块中的新进程。但是你真的应该用平台标记你的问题。