我有一个很长的脚本,最后需要对庞大列表的所有项目运行一个函数,这需要很长时间,例如考虑:
input_a= [1,2,3,4] # a lengthy computation on some data
print('test.1') # for testing how the script runs
input_b= [5,6,7,8] # some other computation
print('test.2')
def input_analyzer(item_a): # analyzing item_a using input_a and input_b
return(item_a * input_a[0]*input_b[2])
from multiprocessing import Pool
def analyzer_final(input_list):
pool=Pool(7)
result=pool.map(input_analyzer, input_list)
return(result)
my_list= [10,20,30,40,1,2,2,3,4,5,6,7,8,9,90,1,2,3] # a huge list of inputs
if __name__=='__main__':
result_final=analyzer_final(my_list)
print(result_final)
return(result)
这段代码的输出因运行而异,但所有运行的共同点是整个脚本的多次运行,似乎通过将 7 指定为 Pool,整个脚本将运行大约 8 次!
我不确定我是否很好地理解了多处理的概念,但我认为它应该做的只是使用多个 CPU 运行函数“input_analyzer”,而不是多次运行整个脚本。就我的真实代码而言,它太长了,并且给了我一个奇怪的错误:
如果不使用多处理,我可以很好地运行此代码,我不知道我在这里做错了什么,尤其是错误“AttributeError 模块对象没有属性'path”“我感谢任何帮助。