Python多处理索引

2024-10-01 13:39:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试通过读取块来并行处理一些文件,并使用多处理库处理每个块。以下是我的代码:

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页。”

当不涉及并行时(不调用池),它可以正常工作。在

什么可能导致这种行为?在


Tags: fromimportsharemapdateifmarkettemp