在Python中,结束多进程可以通过以下几种方法:
1. 使用`multiprocessing`模块的`Process`对象的`terminate()`方法。
from multiprocessing import Process
def worker_process():
子进程的任务代码
pass
创建子进程
p = Process(target=worker_process)
p.start()
结束子进程
p.terminate()
p.join() 等待子进程结束
2. 使用信号(Signal)机制发送`SIGTERM`或`SIGINT`信号给进程。
import os
import signal
def worker_process():
子进程的任务代码
pass
创建子进程
p = Process(target=worker_process)
p.start()
发送信号结束子进程
os.kill(p.pid, signal.SIGTERM)
p.join() 等待子进程结束
3. 在子进程中设置一个标志位,当主线程需要结束子进程时,设置该标志位,子进程检测到标志位改变后退出。
from multiprocessing import Process, Value
def worker_process(stop_flag):
global stop_flag
子进程的任务代码
while not stop_flag.value:
pass
创建子进程
stop_flag = Value('i', 0)
p = Process(target=worker_process, args=(stop_flag,))
p.start()
结束子进程
stop_flag.value = 1
p.join() 等待子进程结束
4. 使用`multiprocessing`模块的`Queue`对象,在主线程中向子进程发送结束信号。
from multiprocessing import Process, Queue
def worker_process(q):
子进程的任务代码
while not q.empty():
message = q.get()
if message == 'stop':
break
创建子进程
q = Queue()
p = Process(target=worker_process, args=(q,))
p.start()
结束子进程
q.put('stop')
p.join() 等待子进程结束