小编Hoa*_*han的帖子

Python 多处理:apply_async() 内的 print()

传递给多处理的 apply_async() 的函数内的 print() 不会打印出任何内容。

我想最终使用 apply_async 来处理大块的文本文件。因此,我希望脚本在屏幕上打印出已经处理了多少行。但是,我根本没有看到任何打印输出。

我附上了一个玩具代码。每个 foo() 调用都应该告诉我正在使用哪个进程。在我的实际代码中,我将在每个块上调用 foo() ,它会告诉我已经处理了该块中的多少行文本。

import os
from multiprocessing import Pool

def foo(x,y):
    print(f'Process: {os.getpid()}')
    return(x*y)

def bar(x):
    p = Pool()
    result_list = []
    for i in range(30):
        p.apply_async(foo, args=(i,i*x), callback=result_list.append)
    p.close()
    p.join()
    return(result_list)

if __name__ == '__main__':
    print(bar(2))
Run Code Online (Sandbox Code Playgroud)

我得到了 x*y 乘法结果的打印结果,但没有看到任何打印结果告诉我进程 ID。

有人可以帮我吗?

python multiprocessing python-3.x python-multiprocessing

7
推荐指数
1
解决办法
3042
查看次数