我正在尝试在我编写的类中使用多处理来加速计算。我正在使用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)