将Python多处理主函数作为模块导入另一个Python文件中

时间:2016-01-16 22:07:56

标签: python python-2.7 python-multiprocessing

我是一名物理学家,我刚刚从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)

我该如何解决这个问题?我在网上搜索但我无法弄清楚这一点。也许我错过了一些明显的东西。谢谢。

0 个答案:

没有答案