我有一些使用多处理 Pool 类并行运行的代码。不幸的是,我从另一个库使用的一些函数有一些详细的输出。要抽象问题,请看以下示例:
from multiprocessing import Pool
def f(x):
print 'hello'
return x*x
p = Pool(10)
p.map(f, [1,2,3])
所以这会打印 'hello' 大约 10 次。 是否有可能使进程的输出静音或 将 std.out 放入某个变量中?感谢您的任何建议。
编辑: 我不想重定向整个标准输出,只是为了我的池的进程。
initializer
参数在工作进程中调用mute
:
import sys
import os
from multiprocessing import Pool
def mute():
sys.stdout = open(os.devnull, 'w')
def f(x):
print 'hello'
return x*x
if __name__ == '__main__':
p = Pool(10, initializer=mute)
p.map(f, [1,2,3])
print('Hello')
打印
Hello