首先,感谢任何回应。这样在我的编程项目中节省了很多时间。我很感激!
我的代码遍历巨大的数据框。这是示例代码:
#len(df)=1,000,000
for i in range(1,len(df))
df.iloc[i,1]=df.iloc[i,1]*40
注意*:我的代码正在做复杂得多的事情。问题是相同的,但我害怕张贴代码行和代码行。本质上,我想以该示例为例来了解如何对数据框的各个部分进行多处理。
我想使用multiprocessing
拆分进程。我希望一个工作人员执行1-500,000任务,下一个工作人员执行500,001-1,000,000。
这是我的想法:
from multiprocessing import Pool
def jobs(jobstart,jobend):
#len(df)=1,000,000
for i in range(jobstart,jobend):
df.iloc[i,1]=df.iloc[i,1]*40
if __name__ == '__main__':
p= multiprocessing.Pool(processes=2)
results=p.starmap(jobs, [(1,500000),(500001,1000000)])
p.close()
print(results)
这怎么不起作用? 错误:
File "C:/Files for Local/fisher_scrapper/frappy.py.py", line 238, in <module>
results=p.starmap(jobs, [(0,50),(51,100)])
File "C:\Users\TLCLA\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 298, in starmap
return self._map_async(func, iterable, starmapstar, chunksize).get()
File "C:\Users\TLCLA\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 683, in get
raise self._value
JSONDecodeError: Expecting value