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解释器相同,因此在这种情况下,您的生活变得更轻松