python - 在python中使用具有多个多处理共享对象(dict,list,variables)的多处理字典
问题描述
我想通过多处理共享多处理列表、字典和变量。如果我将这 3 个作为单独的参数发送给我想要多处理的函数,我就可以编码和使用它们。但是,只要我使用多处理字典或普通字典来存储这三个共享对象,然后将该字典作为单个参数发送到 function 。我得到一个 RuntimeError: shared objects should only be shared using Inheritance
import multiprocessing as mp
from multiprocessing.sharedctypes import Value
def final(D):
if 0 not in D["first"][0]:
D["first"][0].update({0:D["first"][2]})
num = D["first"][2].value
D["first"][2].value+=1
if D["first"][2].value ==3:
D["first"][2].value=0
else:
num = D["first"][2].value
print("num is {}".format(num))
if __name__ == '__main__':
l=mp.Manager().list(range(5))
v=Value("i",0)
d= mp.Manager().dict()
D= mp.Manager().dict()
# D={}
D.update({"first": [d,l,v]})
p= mp.Process(target=final,name = "process", args=(D,))
p.start()
p.join()
这是我得到的错误
Process process:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "test.py", line 58, in d_final
D["first"][0].update({0:D["first"][2]})
File "<string>", line 2, in update
File "/usr/lib/python2.7/multiprocessing/managers.py", line 758, in _callmethod
conn.send((self._id, methodname, args, kwds))
File "/usr/lib/python2.7/multiprocessing/sharedctypes.py", line 218, in __reduce__
assert_spawning(self)
File "/usr/lib/python2.7/multiprocessing/forking.py", line 52, in assert_spawning
' through inheritance' % type(self).__name__
RuntimeError: Synchronized objects should only be shared between processes through inheritance
我怎么能做到以上,因为我需要在一个字典中存储多个多进程字典、列表和变量,我可以在进程之间共享。字典应如下所示:-
D= { "first":[d,l,v] , "second":[d,l,v], "third":[d,l,v] ....... }
解决方案
推荐阅读
- r - 有没有办法根据数据集中的列折叠系统发育树(R)
- php - 将 .php 扩展名添加到 Wordpress 中的一个插件页面
- laravel-8 - 为每个资源控制器添加一个新的默认路由到 Route::resource
- arrays - Data structur similar to Array
- php - How to display "Post Updated" label in front of post title wordpress
- android - Stream multiple langauges audio from a playing video on a local live-streaming server
- c# - 在这里,我正在尝试使用 Xero 和 .net 获取特定员工的所有数据
- python - 如何检查网站中是否存在Specifc txt并保存链接-python?
- etherpad - 在 iframe 中调用 Etherpad 的正确格式是什么
- react-native - 如何禁用状态栏旋转