Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多处理AttributeError模块对象没有属性'__路径'; 我有一个很长的脚本,在最后需要运行一个函数,需要花费很长时间的所有的大列表,例如考虑: 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)_Python_Python 3.x_Multiprocessing - Fatal编程技术网

Python 多处理AttributeError模块对象没有属性'__路径'; 我有一个很长的脚本,在最后需要运行一个函数,需要花费很长时间的所有的大列表,例如考虑: 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)

Python 多处理AttributeError模块对象没有属性'__路径'; 我有一个很长的脚本,在最后需要运行一个函数,需要花费很长时间的所有的大列表,例如考虑: 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),python,python-3.x,multiprocessing,Python,Python 3.x,Multiprocessing,这段代码的输出在不同的运行中有所不同,但所有运行的共同点是整个脚本的多次运行,似乎通过将7指定为池,整个脚本将运行大约8次 我不确定我是否很好地理解了多处理的概念,但我认为它应该做的是使用多个CPU运行函数“input_analyzer”,而不是多次运行整个脚本。就我的真实代码而言,它太长了,给我一个奇怪的错误: 如果不使用多处理,我可以很好地运行这段代码,我不知道我在这里做错了什么,尤其是错误“AttributeError模块对象没有属性”path”,我感谢您的帮助。多处理需要能够导入您的

这段代码的输出在不同的运行中有所不同,但所有运行的共同点是整个脚本的多次运行,似乎通过将7指定为池,整个脚本将运行大约8次

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


如果不使用多处理,我可以很好地运行这段代码,我不知道我在这里做错了什么,尤其是错误“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)
提示的回答:这就是引发异常的原因。池定义在
之外,如果\uuuuu name\uuuuuu=='\uuuuuuu main\uuuuuu'

固定的

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文档也涉及到这个场景:


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

如果我将变量放在if\uu name\uuuu='main'中,它们将超出全局范围,依赖它们的函数将给出错误,例如,在这里,通过将输入放在if name\uuu='main'中,函数输入分析器将给出错误:NameError:未定义全局名称“input_a”!“在这里,脚本将按我在池中分配的CPU数量导入,对吗?@user3015703您的函数不应该依赖于全局变量。请参阅我参考的文档中的编程指南:共享状态在多处理中非常危险。@user3015703是的,这将是您请求的进程数量。谢谢。”s sapi,我知道它现在是如何工作的。你知道真正的代码错误“importerror:random_generator_final不是一个包!”吗?我的代码可能有什么问题?