Memory 如何将对象添加到多处理进程?

Memory 如何将对象添加到多处理进程?,memory,parallel-processing,ipython,pool,multiprocess,Memory,Parallel Processing,Ipython,Pool,Multiprocess,我习惯于使用来自ipyparallel的ipcluster,在这里我可以通过dview['object']=object将对象上载到workers 我想知道如何使用多处理实现这一点。我希望它是异步的,这样我最终可以将已完成的作业制成表格,以显示进度条,但目前我主要感兴趣的是上传一个对象(例如,一个大的mem数据帧),这样我就不必通过函数传递它,从而降低速度: from ipyparallel import Client import pandas as pd rc = Client(profi

我习惯于使用来自
ipyparallel
ipcluster
,在这里我可以通过
dview['object']=object
将对象上载到workers

我想知道如何使用
多处理
实现这一点。我希望它是异步的,这样我最终可以将已完成的作业制成表格,以显示进度条,但目前我主要感兴趣的是上传一个对象(例如,一个大的mem数据帧),这样我就不必通过函数传递它,从而降低速度:

from ipyparallel import Client
import pandas as pd

rc = Client(profile='default')
dview = rc[:]
lview = rc.load_balanced_view()

myobject = pd.read_table('/some/path/')
#                                  ############################################
dview['myobject'] = myobject       #### <- how do I do this using multiprocess?
#                                  ############################################

def dowork(rowstart):
    rowend = rowstart + (1000-1)
    ...
    return pd.DataFrame(work)

jobs = []
for i in range(0,len(myobject.index),1000):
    jobs.append(lview.apply_async(dowork, i))

newdf = pd.concat([j.r for j in jobs])
来自ipyparallel导入客户端的

作为pd进口熊猫
rc=客户端(profile='default')
dview=rc[:]
lview=rc.load\u balanced\u view()
myobject=pd.read_表(“/some/path/”)
#                                  ############################################
dview['myobject']=myobject
Q:如何使用
多处理

根据定义,python中基于进程的并行性将python解释器的整个状态(包括其所有内部变量等)复制到实例化后的新工作进程。操作系统决定如何完成或无法完成(有关所有详细信息、风险和其他缺点,请阅读
多处理
文档)

虽然这是一个昂贵但主要需要的步骤,以摆脱中央GIL锁垄断性的所有python处理的再利用,但此方法确保您的进程通过设计“了解”
(icluster必须将对象重新广播到所有远程节点,因为成本高出几个数量级(从几百个
[ns]
到远远高于
[ms]
)对于本地/远程
SER/DES
-操作+L2/L3网络级传输服务的延迟,它可以让您在启动作业之前,手动分发代码所需的所有对象

共定位
多处理
-派生的进程“知道”与父python解释器相同,因此在这种情况下,您的生活变得更轻松