我尝试通过读取块来并行处理一些文件,并使用多处理库处理每个块。以下是我的代码:
from multiprocessing import Pool
from itertools import islice
import traceback
#Produce key value pairs (Date, Market_Share*Market_Share)
def Map(L):
results = []
for w in L:
temp = w.split(',')
Date = temp[0]
Share = float(temp[1][:-1])
ShareSquare = str(Share*Share)
results.append((Date,ShareSquare))
return results
if __name__=='__main__':
pool = Pool(2)
f = open('C:/Users/Daniel/Desktop/Project/Optiver/atchm_9450.csv','r')
fw = open('C:/Users/Daniel/Desktop/Project/Optiver/marketshare.csv','w')
f.readline()
while True:
next_n_lines = list(islice(f,16))
if not next_n_lines:
break
else:
l = pool.map(Map,next_n_lines)
f.close()
fw.close()
但是,它会产生索引超出范围的错误:
^{pr2}$“像是被传递到对象表中的东西,比如,2014年6月6日,第68页,第68页,第68页。”
当不涉及并行时(不调用池),它可以正常工作。在
什么可能导致这种行为?在
乍一看,只有这两行可以引发此异常:
试着检查w是否有足够的数据。在
相关问题 更多 >
编程相关推荐