How to terminate a multiprocess in python when a given condition is met?(如何在满足给定条件的情况下终止Python中的多进程?)
本文介绍了如何在满足给定条件的情况下终止Python中的多进程?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有以下函数:
def f():
while True:
x = generate_something()
if x == condition:
return x
if __name__ == '__main__':
p=Pool(4)
我要在多进程中运行此函数,当其中一个进程满足我的函数条件时,我希望所有其他进程停止。
推荐答案
您可以在multiprocessing中使用event和terminate,因为您要在其中一个子进程中满足条件后停止所有进程。
检查下面的工作示例,其中我正在创建两个进程,这两个进程将检查变量x的值是否为5。
一旦某个进程将x的值设置为5,则事件即被设置。
Event为set或unset持续签入main代码。
编码:
import random
import multiprocessing
import sys
import time
def generate_something():
return random.choice(range(10))
def f(event):
while True:
x = generate_something()
print "Value is ",x
if x == 5:
print "Got what I am searching for."
event.set()
time.sleep(2)
if __name__ == '__main__':
jobs = []
#Create Event
event = multiprocessing.Event()
#Create two processes
for i in range(2):
p = multiprocessing.Process(target=f,args=(event,))
p.start()
jobs.append(p)
#Check whether event is set or not
#When set close all child processes
while True:
if event.is_set():
print "Exiting all child processess.."
for i in jobs:
#Terminate each process
i.terminate()
#Terminating main process
sys.exit(1)
time.sleep(2)
输出:
"C:Program Files (x86)Python27python.exe" C:/Users/punddin/PycharmProjects/demo/a.py
Value is 4
Value is 2
Value is 7
Value is 6
Value is 3
Value is 4
Value is 8
Value is 3
Value is 8
Value is 1
Value is 9
Value is 9
Value is 1
Value is 6
Value is 5
Got what I am searching for.
Value is 6
Exiting all processess..
这篇关于如何在满足给定条件的情况下终止Python中的多进程?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:如何在满足给定条件的情况下终止Python中的多进程?
基础教程推荐
猜你喜欢
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
