【发布时间】:2018-12-28 17:22:44
【问题描述】:
在我的代码中,我有两个函数,第一个函数operate_camera 更新存储变量。第二个函数print_func 打印存储变量。
我想同时运行这两个函数,打印过程延迟 15 秒。然而operate_camera 函数包含一个while 循环。并且通过运行脚本,它只会运行一次进程p2,并且会停留在进程p1。
为简单起见,我在以下代码中使用简单的一维数组。
from multiprocessing import Process, Array
import numpy as np
import time
def operate_camera(store):
while True: # loop that updates image
store = store + np.ones_like(store)
def print_func(store):
print(store)
time.sleep(15)
if __name__ == "__main__":
store = np.array([0,0,0])
p1 = Process(target=operate_camera, args=(store,))
p2 = Process(target=print_func, args=(store,))
p1.start()
p2.start()
输出只会卡在
[0,0,0]
多处理包中是否有任何解决方案可以让我保留这种形式的代码。如果没有,是否有任何替代解决方案来解决这个问题?
【问题讨论】:
-
您是否尝试过拿出时钟并等待整整一分钟?另外,感谢minimal reproducible example!
-
由于您使用的是多处理,您可以在 print_func 中使用另一个
while循环来不断打印您的值并同时使用operate_camera更新它们
标签: python python-multiprocessing python-multithreading