Python多处理挂起并导入自定义模块

时间:2017-08-08 09:17:10

标签: python multiprocessing

我必须对一个类的实例中的数据进行大量计算,我现在每个计算都有一个循环运行,但它花了不可思议的长(+50小时)。

所以我想尝试并行处理,从我读过的我应该使用multiproccessing模块而不是线程模块,因为任务是CPU绑定的,但我无法使它工作。

我可以在简单的任务上运行多个工作进程,但只要我导入任何自定义模块,当我调用pool.map时脚本就会挂起。

我没有粘贴我的实际代码,而是编写了一个具有相同问题的虚拟脚本。请参阅下文。

from multiprocessing import Pool
from functools import partial

# CUSTOM MODULES AND CLASS
import customModule as cm
from customObjectModule import CustomObject


def function(customObj, a):

    temp1 = cm.HelperClass2(customObj.data1)
    temp2 = cm.HelperClass1() * customObj.data2
    return temp1 * temp2 * a

def main():
    # Creating instance of custom object
    cObj = CustomObject(1,2)
    # using partial to deal with multiple arguments    
    partialF = partial(function,cObj)

    p = Pool(3)
    # running function, being passed the custom object and 
    # and running it for a set of inputs a
    print(p.map(partialF,[1,2,3]))

if __name__ == '__main__':
    main()

我不确定为什么它不起作用,

对于python,我也是一个相对新手。如果有人能够指出上述代码中的错误,或者指向一些有关多处理的更多资源,那么我将非常感激。

0 个答案:

没有答案