当一个函数结束时,另一个函数也以Python中的多处理结束



我使用的是一个多处理库,同时运行两个函数。我想在某个时刻完成两个函数中的一个,当那个函数完成时,另一个函数也应该结束。

示例:

from multiprocessing import Process
def a():
while True:
print('a')
break

def b():
while True:
print('b')
if __name__ == '__main__':
pA = Process(target=a)
pB = Process(target=b)

在上面的代码中,我该如何做到当函数a停止时,它也会停止函数b(它正在重复(?

提前感谢

使用multiprocessing.Eventb()通信a()已结束。

from multiprocessing import Process, Event
def a(stopEvent):
while True:
print('a')
break
stopEvent.set()

def b(stopEvent):
while True:
print('b')
if stopEvent.is_set():
break;
if __name__ == '__main__':
stopEvent = Event()
pA = Process(target=a, args=(stopEvent,))
pB = Process(target=b, args=(stopEvent,))
pB.start()
pA.start()
pA.join()
pB.join()

您可以从一个Process到另一个使用Queue

#soMultiprocessingOneProcessEndsAnother
from multiprocessing import Process, Queue
import time
def a(q):
while True:
print('a')
break
q.put(None)
print('a Done')

def b(q):
while q.empty():
print('b')
time.sleep(0.01)
print('b Done')
if __name__ == '__main__':
pq = Queue()
pA = Process(target=a, args=(pq,))
pB = Process(target=b, args=(pq,))
pB.start()
time.sleep(0.1)
pA.start()
pA.join()
pB.join()
print('m Done')

样本输出:

b
b
b
b
b
b
b
a
a Done
b Done
m Done

相关内容

  • 没有找到相关文章

最新更新