使用Python多处理模块时,应该在哪里放置“if __name__ ='__ main__'”这个习惯用法?

时间:2014-05-13 21:47:58

标签: python multiprocessing

我正在运行Windows 7。

在我的主模块中,我调用了一个函数A,它位于模块a中。

import a

a.A(listOfInputTuplesForB)

A调用函数B的多个实例:

import multiprocessing as mp

def A(listOfInputTuplesForB):
    if __name__ == '__main__':
        pool = mp.Pool(processes = mp.cpu_count())
        pool.map(poolWrapperForB, listOfInputTuplesForB)
        pool.close()
        pool.join()

def poolWrapperForB(inputTuple):
    return B(*inputTuple)

def B(arg1, arg2, arg3):
    print "I did nothing with my arguments!"

现在,很明显,当我运行主模块时,没有任何反应,因为条件if __name__ == '__main__'失败,因为__name__ == 'a'

这个程序if __name__ == '__main__'应该放在哪里?

1 个答案:

答案 0 :(得分:4)

def A(listOfInputTuplesForB):删除主文件并将其放在另一个文件中。

import a

if __name__ == "__main__":
  a.A(listOfInputTuplesForB)