在多处理中共享Python对象:值或管理器

时间:2017-09-10 20:18:23

标签: python multiprocessing

如果我想使用multiprocessing分享对象, 根据具体情况,我应该使用以下哪一项?

在我看来:

  • Value仅适用于ctypes的对象(但ctypes是什么?numpy.ndarray ctypesnetworkx.Graph
  • Manager可用于任意Python对象,但我需要包装对象方法

请帮助纠正我的理解。谢谢!

1 个答案:

答案 0 :(得分:0)

Value是标量,它只能保存一个数据时间。因此,如果您想在不同流程之间共享说chardoubleintfloat,请使用Array。与Value不同,Array可以包含多个值。

有关Python ctypes中定义的ctypes的详尽列表,请查看此文档:Fundamental data types。因此,intboollongshort和许多其他人都是C编程语言中的数据类型。

对于Manager对象,我认为文档内容非常广泛:

  

管理器提供了一种创建可在不同进程之间共享的数据的方法,包括在不同计算机上运行的进程之间通过网络共享。管理器对象控制管理共享对象的服务器进程。其他进程可以使用代理访问共享对象。

你可能想知道这是怎么回事!你只需要使用代码来看看它们是如何组合在一起的,它并不复杂。