gpt4 book ai didi

Python 多处理和导入模块

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:40 24 4
gpt4 key购买 nike

我有两个进程正在运行,它们访问这样一个导入的模块:

import foo

def bar():
while True:
foo.a = True

def baz():
while True:
print foo.a

p1 = Process(target=bar)
p2 = Process(target=baz)
p1.start()
p2.start()

似乎每个进程都有自己的模块 foo 实例,bar() 将值更改为 True,但在 baz() 中它是 False。任何解决方法?

最佳答案

与线程不同,单独的进程不共享内存。然而,有一些方法,to share data between separate processes .一种方法是使用 mp.Value:

foo.py:

import multiprocessing as mp
a = mp.Value('b', False)

然后是脚本

import time
import foo
import multiprocessing as mp

def bar():
foo.a.value = True

def baz():
for i in range(10**5):
print foo.a.value

if __name__ == '__main__':
p2 = mp.Process(target=baz)
p2.start()
time.sleep(0.5)
p1 = mp.Process(target=bar)
p1.start()

产量

0
0
0
...
1
1
1
...

对于共享 bool 值,mp.Event 可能是更好的选择:

foo.py:

import multiprocessing as mp
a = mp.Event()

脚本.py:

def bar():
foo.a.set()

def baz():
for i in range(10**5):
print foo.a.is_set()

产量

False
False
False
...
True
True
True
...

关于Python 多处理和导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32096279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com