我正在尝试使用 Python 3.6 中的 multiprocessing.Pool.map 函数(使用Windows 10)来加速一些代码,否则需要一个小时运行
我已将大量“ blobs ”拆分为较小的列表,并且目标是使用映射函数一次处理少量 blob 。
我试图尽可能地遵循我发现的示例,但遇到了意外错误。我写的代码如下:
import multiprocessing as mp
def function(arg):
blob,image1,image2 = arg
#does stuff to a blob using image1 and image2 get a string and an array
return [string,array]
if __name__ == '__main__':
pool = mp.Pool(processes=4)
for(i in range(len(biglist))): #Each element is a smaller list which contains blobs
blobcount = len(biglist[i])
print("Processed "+str(100*i/len(biglist)+"%")
argslist = list(zip(biglist[i],[image1]*blobcount,[image2]*blobcount))
results = pool.map(function,argslist)
for i in range(len(results)):
cataloguefile.write(results[i][0])
pool.close()
pool.join()
当我运行代码时,我在池创建行上收到此错误消息:
AttributeError: module '__main__' has no attribute '__spec__'
这是完整控制台输出的screenshot。
很抱歉,如果这是一个愚蠢的错误,但我无法理解。