如果模块“user.py”与代码位于同一目录中,则以下代码有效,但如果它位于不同目录中则失败。我收到的错误消息是“ModuleNotFoundError: No module named 'user'
import multiprocessing as mp
import imp
class test():
def __init__(self,pool):
pool.processes=1
usermodel=imp.load_source('user','D:\\pool\\test\\user.py').userfun
#file D:\\pool\\test\\user.py looks like this:
# def userfun():
# return 1
vec=[]
for i in range(10):
vec.append([usermodel,i])
pool.map(self.myfunc,vec)
def myfunc(self,A):
userfun=A[0]
i=A[1]
print (i,userfun())
return
if __name__=='__main__':
pool=mp.Pool()
test(pool)
如果函数 myfunc 在没有池化进程的情况下调用,则无论 user.py 是在主代码的同一目录中还是在 \test 中,代码都可以。为什么池化进程在单独的目录中找不到 user.py?我尝试了不同的方法,例如修改我的路径然后导入用户和 importlib,所有这些都具有相同的结果。
我正在使用 Windows 7 和 python 3.6