一种可能的解决方案是使用
multiprocessing.Event
同步原语,以向其他进程发出它应该退出的信号,例如:
import sys
import time
from multiprocessing import Event, Process
def loop_a(evt):
counter = 0
while True:
print("a")
time.sleep(1)
counter += 1
if counter == 3:
print("I want to stop the loop_b")
evt.set()
sys.exit()
def loop_b(evt):
while not evt.is_set():
print("b")
time.sleep(1)
if __name__ == "__main__":
evt = Event()
p1 = Process(target=loop_a, args=(evt,)).start()
p2 = Process(target=loop_b, args=(evt,)).start()
打印:
a
b
a
b
a
b
I want to stop the loop_b # <-- and the loob_b ends here too