gpt4 book ai didi

python - 多处理 AttributeError 模块对象没有属性 '__path__'

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:14 24 4
gpt4 key购买 nike

我有一个很长的脚本,最后需要对巨大列表的所有项目运行一个函数,这需要很长时间,例如:

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 次!

enter image description here

我不确定我是否很好地理解了多处理的概念,但我认为它应该做的只是使用多个 CPU 运行函数“input_analyzer”,而不是多次运行整个脚本。如果是我的真实代码,它太长了,它给了我一个奇怪的错误:

enter image description here

在不使用多处理的情况下,我运行这段代码很好,我不知道我在这里做错了什么,尤其是错误“AttributeError 模块对象没有属性 'path'”我感谢任何帮助。

最佳答案

from multiprocessing import Pool as ThreadPool
import requests


API_URL = 'http://example.com/api'
pool = ThreadPool(4) # Hint...

def foo(x):
params={'x': x}
r = requests.get(API_URL, params=params)
return r.json()

if __name__ == '__main__':
num_iter = [1,2,3,4,5]
out = pool.map(foo, num_iter)
print(out)

提示的答案:这就是引发异常的原因。池定义在外部 if __name__ == '__main__'

固定...

from multiprocessing import Pool as ThreadPool
import requests


API_URL = 'http://example.com/api'

def foo(x):
params={'x': x}
r = requests.get(API_URL, params=params)
return r.json()

if __name__ == '__main__':
pool = ThreadPool(4) # Hint...
num_iter = [1,2,3,4,5]
out = pool.map(foo, num_iter)
print(out)

python 文档也涉及这种情况:https://docs.python.org/2/library/multiprocessing.html#using-a-pool-of-workers

在使用 multiprocessing.dummy 时,我完全没有发现这是一个问题。

关于python - 多处理 AttributeError 模块对象没有属性 '__path__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25757794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com