模块之间的Python共享列表

时间:2015-07-30 15:06:55

标签: python shared-memory python-multiprocessing

我想创建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是封装的,并且不会影响全局变量。然后我迷失了多处理的管理器和队列:)

0 个答案:

没有答案