我有一些使用多处理池类并行运行的代码。不幸的是,我从另一个库中使用的一些函数有一些冗长的输出。要抽象问题,请查看以下示例:
from multiprocessing import Pool
def f(x):
print 'hello'
return x*x
p = Pool(10)
p.map(f, [1,2,3])
所以这将打印 10 次“hello”。 是否有可能使进程的输出静音或 将 std.out 放入某个变量中?感谢您的任何建议。
编辑: 我不想重定向整个标准输出,只是为了我的池的进程。
请您参考如下方法:
使用the initializer parameter在工作进程中调用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
