在我的代码中有两个函数,第一个函数operate_camera
更新存储变量。第二个函数print_func
打印存储变量。你知道吗
我想同时运行这两个函数,打印过程延迟15秒。但是operate_camera
函数包含一个while
循环。通过运行脚本,它只会运行进程p2
一次,并且会停留在进程p1
上。你知道吗
为了简单起见,我在下面的代码中使用简单的1D数组。你知道吗
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]
在多处理软件包中是否有任何解决方案可以让我保留这种形式的代码。如果没有,这个问题还有其他的解决办法吗?你知道吗
首先,你真的想在这里多处理,而不是多线程? 你要求其他的解决方案,所以,我提出了多线程来解决这个问题。您应该检查this answer以获得清晰的信息,这里主要讨论相同的问题。所以,我认为问题是print函数只执行一个,因此也需要一个循环。你知道吗
您可以注意到,这段代码使用的是全局对象,这不是最佳实践,但是我们需要一个共享对象。你知道吗
对于带参数的函数
相关问题 更多 >
编程相关推荐