我是一名物理学家,我刚刚从MATLAB迁移到Python。我需要实现多处理来执行遗传优化算法的计算。
我已经设法使用我在网上找到的信息在单个python文件中进行多处理工作。这是我为复制问题而创建的示例代码(它没有做任何有用的事情)。
values
如果我从Python控制台运行它,它会给我答案。同样从Python控制台我可以从Python文件导入该函数,它也可以工作。例如:
import numpy as np
import multiprocessing as mp
def fun1((index, array)):
lst_1=[]
for ar_i in array:
lst_1.append(ar_i+index)
return np.sum(np.squeeze(lst_1))
def main(N):
arr=np.arange(1,N)
lst=[]
for elem in arr:
lst.append((elem,arr))
p = mp.Pool(8)
a=p.map(fun1, lst)
return a
if __name__ == "__main__":
ans=main(30)
但是,如果我在另一个Python文件(例如主要的遗传算法文件)中,我再次导入该函数并尝试将其运行为:
import example1
ans2=example1.main(20)
我收到错误消息:
import example1
ans3=example1.main(10)
我该如何解决这个问题?我在网上搜索但我无法弄清楚这一点。也许我错过了一些明显的东西。谢谢。