我想创建2个模块(称为A和B):A将值写入列表,B从该列表中读取这些值。 第一个模块不断运行并使用多处理
实现我的想法是创建一个将由A和B导入的新模块C.然后,A将在C列表中存储值.B然后在需要时从C访问列表。
拥有共享列表的主要原因是我不希望A直接与B对话。
所以这是我到目前为止的代码示例
#a.py
import c
from multiprocessing import Process
def foo():
while True:
c.add('value')
def run():
p = Process(target=foo)
p.start()
p.join()
if __name__ == '__main__':
run()
#b.py
import c
print c.list_of_values
#c.py
list_of_values = []
def add(val):
list_of_values.append(val)
据我所知,问题在于导入时,它是模块C的全新实例。我可以以某种方式使其共享吗? 如果我可以通过在A中使用 list_of_values 并且B可以检索它来避免它,则不需要第三个模块。我试过了,但也无处可去。我可以依赖于B中的A,因此B可以启动A并运行它。任何提示?
如果我可以做那样的话,那对我也有用:
#b.py
import a
Process(target=a.run).start()
print a.list_of_values
我认为我的问题是Process是封装的,并且不会影响全局变量。然后我迷失了多处理的管理器和队列:)