类中的Pathos多处理会产生乱码标准输出

时间:2017-11-22 22:15:19

标签: python python-2.7 multiprocessing pathos

我正在尝试在我编写的类中使用多处理来加速计算。我正在使用pathos.multiprocessing和dill,并在ProcessingPool上使用map。我在控制台中测试了多处理的功能,并按预期执行。我遇到的问题是,当我尝试在我的代码中实现它时,一旦它调用pool.map,我正在使用的终端开始吐出荒谬的废话。输出可以识别为来自代码,但我不知道它是如何打印的。其中一些来自我在下面定义的方法,其中包括当前的日期时间。在废话中我看到它打印了当前时间,在调用了pool.map之后,所以这不仅仅是被重复打印出来的东西,它是新的输出。这是一个小代码,说明我如何使用多处理。

My_func比我下面的要复杂一点,但是作为第一步,我把它改成了下面写的字面,问题仍然存在。

此外,Ctr-C会触发KeyboardInterrupt,但不会完全停止该程序。我在Windows 10上使用Visual Studio和python 2.7.13。

from pathos.multiprocessing import ProcessingPool
import dill
import datetime

class my_class(Object):
    def __init__(self):
        pool = ProcessingPool(nodes=4)

        p1 = [1,2,3]
        p2 = [4,5,6]
        p3 = [7,8,9]

        results = pool.map(self.my_func, p1, p2, p3)

    def my_func(self,x,y,z):
        print(x,y,z)

    def status_printout(self,message):
        header = datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')
        print(header+' -- '+message)

1 个答案:

答案 0 :(得分:0)

尝试使用Lock确保一次只有一个子进程写入stdout。