Skip to main content
 首页 » 编程设计

python之在多处理过程中抑制输出

2025年05月04日38lyj

我有一些使用多处理池类并行运行的代码。不幸的是,我从另一个库中使用的一些函数有一些冗长的输出。要抽象问题,请查看以下示例:

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