使用池从Process打印到屏幕

时间:2014-01-15 15:09:31

标签: python printing pool multiprocess

我一直在尝试打印来屏蔽Pool生成的过程中的内容。不幸的是没有出现!我需要这个,因为我将有4个进程同时运行很长时间,我需要估算并同时打印一些信息。

我一直在四处寻找自己想弄清楚,但我不明白这是否真的可能或如何做到这一点。使用进程而不是池?任何帮助&代码将非常感谢!

这是一个非常简单的例子,我很乐意让它发挥作用!

from multiprocessing import Pool
import os

def printer(i):
    pid = os.getpid()
    print "#%i PID: %i" % (i,pid)
    return pid

if __name__ == '__main__':
    pool = Pool(2)
    res = pool.map(printer,[1,2])
    pool.terminate()
    print "PIDs", res

我希望在终止池并打印“res”之前打印“打印机”的内容。

1 个答案:

答案 0 :(得分:0)

您可以使用Pool.imap在结果准备好时迭代结果。

from multiprocessing import Pool
import os

def printer(i):
    pid = os.getpid()
    print "#%i PID: %i" % (i,pid)
    return pid

def print_result(res):
    print "PID", res

if __name__ == '__main__':
    pool = Pool(2)
    res = pool.imap(printer,range(10), 1)
    for pid in res:
        print pid
    pool.terminate()