Python 多进程:使用结束信号优雅地终止进程
在 Python 中,使用多进程运行函数时,可能需要在遍历完字典后结束进程。可以通过添加一个结束信号来告诉进程应该结束了。例如,在遍历完字典后,再向队列中放入一个特殊的结束信号。
以下是一个修改后的示例代码:
import multiprocessing
def item_put(q):
global i
for key_1, value_1 in data_1.items():
data1_list = [key_1, value_1]
q.put(data1_list)
i += 1
# 遍历完字典后,向队列中放入一个特殊的结束信号
q.put(None)
if __name__ == '__main__':
data_1 = {'a': 1, 'b': 2, 'c': 3}
i = 0
q = multiprocessing.Queue()
p = multiprocessing.Process(target=item_put, args=(q,))
p.start()
while True:
item = q.get()
if item is None:
# 收到结束信号,进程结束
break
print(item)
p.join()
在这个示例中,我们向队列中放入 None 来作为结束信号。主进程通过检测队列中是否为 None 来判断子进程是否已经结束。
这种方法可以让主进程更加优雅地控制子进程的结束,并确保子进程完成任务后能够正常退出。
原文地址: https://www.cveoy.top/t/topic/nv2c 著作权归作者所有。请勿转载和采集!