【发布时间】:2018-06-25 10:31:57
【问题描述】:
在过去的一小时里,我一直在研究以下问题,但没有任何运气:
Python sharing a dictionary between parallel processes
multiprocessing: sharing a large read-only object between processes?
multiprocessing in python - sharing large object (e.g. pandas dataframe) between multiple processes
我编写了一个非常基本的测试文件来说明我想要做什么:
from collections import deque
from multiprocessing import Process
import numpy as np
class TestClass:
def __init__(self):
self.mem = deque(maxlen=4)
self.process = Process(target=self.run)
def run(self):
while True:
self.mem.append(np.array([0, 1, 2, 3, 4]))
def print_values(x):
while True:
print(x)
test = TestClass()
process = Process(target=print_values(test.mem))
test.process.start()
process.start()
目前输出如下:
deque([], maxlen=4)
如何从主代码或运行“print_values”的进程访问内存值?
【问题讨论】:
-
您需要阅读exchanging objects 或sharing state between processes。您的子进程每个都获得双端队列的分叉副本,它们之间没有进一步的连接。你可能想要managed
Queue。
标签: python python-multiprocessing