下面是演示该问题的代码。请注意,这仅是一个示例,我在更复杂的应用程序中使用了相同的逻辑,在这里我无法使用sleep作为时间量,process1修改变量需要花费时间,具体取决于速度互联网连接。
from multiprocessing import Process
code = False
def func():
global code
code = True
pro = Process(target=func)
pro.start()
while code == False:
pass
pro.terminate()
pro.join()
print('Done!')
运行时,屏幕上不显示任何内容。当我通过按CTRL-C终止程序时,堆栈跟踪显示正在执行while循环。
Python有几个并发库:threading
,multiprocessing
和asyncio
(及以上)。
multiprocessing
是一个使用子进程绕过python无法同时运行CPU密集型任务的库。要在不同的multiprocessing.Process
ES之间共享变量,请通过multiprocessing.Manager()
实例创建它们。例如:
import multiprocessing
import time
def func(event):
print("> func()")
time.sleep(1)
print("setting event")
event.set()
time.sleep(1)
print("< func()")
def main():
print("In main()")
manager = multiprocessing.Manager()
event = manager.Event()
p = multiprocessing.Process(target=func, args=(event,))
p.start()
while not event.is_set():
print("waiting...")
time.sleep(0.2)
print("OK! joining func()...")
p.join()
print('Done!')
if __name__ == "__main__":
main()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句