在一个多处理函数中从另一个多处理器函数开始while循环



所以我想从另一个多处理函数开始一个多进程函数中的嵌套while循环。在一个函数中,我将变量(action(更改为"fn2",在另一个函数中将有一个嵌套while循环,其条件为while action == "fn2":

参见代码:

from multiprocessing import Process
running = True
action = None

def func1():
global action
if 1+1 == 2:
action = "fn2"
print(action)

def func2():
while running:
while action == "fn2":
print("fn2")

if __name__ == '__main__':
p1 = Process(target=func1)
p1.start()
p2 = Process(target=func2)
p2.start()
p1.join()
p2.join()

然而,当我运行它时,代码只打印"fn2"一次(确认action等于"fn2"(。但是func2()内部的嵌套循环不执行。很抱歉,如果答案很明显,我是多处理的新手。

i添加了两条注释(带有print语句(来突出显示错误。

基本上action=Nonefunc2()中,所以这就是为什么。。。

from multiprocessing import Process
running = True
action = None

def func1():
global action
if 1+1 == 2:
action = "fn2"
print(action)

def func2():
while running:
print('got here')  # <--- loops infinitly here
print(action) # <--- this is none
while action == "fn2":
print("fn2")

if __name__ == '__main__':
p1 = Process(target=func1)
p1.start()
p2 = Process(target=func2)
p2.start()
p1.join()
p2.join()

为了在多处理(称为Sharing state between processes(时共享值,您需要对单个设备共享内存使用valuearray,或者对服务器网络使用Manager

这里有一个链接:https://docs.python.org/3/library/multiprocessing.html

基本格式如下:

from multiprocessing import Process, Value, Array
def f(n, a):
n.value = 3.1415927
for i in range(len(a)):
a[i] = -a[i]
if __name__ == '__main__':
num = Value('d', 0.0)
arr = Array('i', range(10))
p = Process(target=f, args=(num, arr))
p.start()
p.join()
print(num.value)
print(arr[:])

因此,在这个问题的情况下,变量action等价于n(变量(或a(列表(等。这可以在函数之间共享。

还要注意,可以使用args关键字args=(num, arr ...)将参数解析为多进程函数。

相关内容

  • 没有找到相关文章

最新更新