我一直在尝试解决我的多处理脚本,经过大约 8 个小时的尝试和失败,我终于想通了一些东西。我想导入一个包含同一目录中的列表的脚本。在我的主文件中有 2 个函数:第一个是我的multiprocessing
函数,第二个是main
.另一个文件中的列表是我的多处理Pool
的迭代器,但由于某种原因,它说它在我的模块中找不到我的列表。
我的主文件有:
import mymodulename
import multiprocessing
def multiprocessingfunction(iteratornotactuallythename):
#my code here
def main():
pool = Pool(5)
results = pool.map(multiprocessingfunction, mylist#the one that python cant seem to find)
我尝试将其导入为*
,像这样导入单个列表:from mymodulename import mylist
我也尝试像这样导入它:import mymodulename
. 当我尝试导入单个名称时,它给出了此错误:
ImportError: cannot import name _mylist_ from mymodulename
当我尝试正常导入它或使用*
导入它时,出现此错误:
"AttributeError: 'function' object has no attribute mylist
我的所有文件都在同一个目录中
我的模块文件有:
def starting():
mylist = [contentsoffile]
刚刚尝试的回溯是:
File "E:anonargparseversion.py", line 16, in <module>
from mymodule import arrang
ImportError: cannot import name 'arrang' from 'mymodule'
mylist
是函数starting()
的局部变量,这意味着导入后它对其他模块不可见,要么将其放在全局范围内(与def starting()
相同的缩进(,要么return mylist
放在starting()
的末尾,并使用starting()
的返回值作为mylist
。
情况 1:
import mymodulename
import multiprocessing
def multiprocessingfunction(iteratornotactuallythename):
#my code here
def main():
pool = Pool(5)
results = pool.map(multiprocessingfunction, mymodulename.mylist)
案例2:
from mymodulename import mylist
import multiprocessing
def multiprocessingfunction(iteratornotactuallythename):
#my code here
def main():
pool = Pool(5)
results = pool.map(multiprocessingfunction,mylist)
如果收到错误,则应发布错误回调信息。不只是一句话。