【发布时间】:2015-09-17 14:44:38
【问题描述】:
我正在使用多处理模块来生成 35 个数据帧。我想这会节省我的时间。但问题是该类不返回任何东西。我希望从 self.dflist 返回数据帧列表
这是创建 dfnames 列表的方法。
urls=[]
fnames=[]
dfnames=[]
for x in xrange(100,3600,100):
y = str(x)
i = y.zfill(4)
filename='DCHB_Town_Release_'+i+'.xlsx'
url = "http://www.censusindia.gov.in/2011census/dchb/"+filename
urls.append(url)
fnames.append(filename)
dfnames.append((filename, 'DCHB_Town_Release_'+i))
这是使用上面代码生成的dfnames的类。
import pandas as pd
import multiprocessing
class mydf1():
def __init__(self, dflist, jobs, dfnames):
self.dflist=list()
self.jobs=list()
self.dfnames=dfnames
def dframe_create(self, filename, dfname):
print 'abc', filename, dfname
dfname=pd.read_excel(filename)
self.dflist.append(dfname)
print self.dflist
return self.dflist
def mp(self):
for f,d in self.dfnames:
p = multiprocessing.Process(target=self.dframe_create, args=(f,d))
self.jobs.append(p)
p.start()
#return self.dflist
for j in self.jobs:
j.join()
print '%s.exitcode = %s' % (j.name, j.exitcode)
这样调用的类...
dflist=[]
jobs=[]
x=mydf1(dflist, jobs, dfnames)
y=x.mp()
正确打印 self.dflist。但不返回任何东西。
我可以按顺序收集所有数据场。但为了节省时间,我需要同时使用多个进程来生成数据帧并将其添加到列表中。
【问题讨论】:
标签: pandas python-multiprocessing