我正在尝试在我编写的类中使用多处理来加速计算。我正在使用 pathos.multiprocessing 和 dill,并在 ProcessingPool 上使用地图。我已经在控制台中测试了多处理的功能,它按预期执行。我遇到的问题是,当我尝试在我的代码中实现它时,只要它调用 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)