Python multiprocessing.Pool不会立即启动

Python multiprocessing.Pool不会立即启动,第1张

概述我想将文本输入到 python并并行处理它.为此,我使用multiprocessing.Pool.问题是,有时候,并非总是如此,我必须在处理任何内容之前多次输入文本. 这是我的代码的最小版本,以重现问题: import multiprocessing as mpimport timedef do_something(text): print('Out: ' + text, flush 我想将文本输入到 python并并行处理它.为此,我使用multiprocessing.Pool.问题是,有时候,并非总是如此,我必须在处理任何内容之前多次输入文本.

这是我的代码的最小版本,以重现问题:

import multiprocessing as mpimport timedef do_something(text):    print('Out: ' + text,flush=True)    # do some awesome stuff hereif __name__ == '__main__':    p = None    while True:        message = input('In: ')        if not p:            p = mp.Pool()        p.apply_async(do_something,(message,))

发生的事情是,在得到结果之前我必须多次输入文本,无论我在第一次输入内容后等待多久. (如上所述,每次都不会发生这种情况.)

python3 test.pyIn: aIn: aIn: aIn: Out: aOut: aOut: a

如果我在while循环之前创建池,或者如果我在创建池之后添加time.sleep(1),它似乎每次都有效.注意:在获得输入之前,我不想创建池.

有人对此行为有解释吗?

我正在使用Python 3.4.2运行windows 10
编辑:与Python 3.5.1相同的行为

编辑:

一个更简单的示例,包含Pool和ProcesspoolExecutor.我认为问题是在appyling / submitting之后调用input(),这在第一次appyling / submitting时似乎只是一个问题.

import concurrent.futuresimport multiprocessing as mpimport timedef do_something(text):    print('Out: ' + text,flush=True)    # do some awesome stuff here# ProcesspoolExecutor# if __name__ == '__main__':#     with concurrent.futures.ProcesspoolExecutor() as executor:#         executor.submit(do_something,'a')#         input('In:')#         print('done')# Poolif __name__ == '__main__':    p = mp.Pool()    p.apply_async(do_something,('a',))    input('In:')    p.close()    p.join()    print('done')
解决方法 我在Mac上试用它时你的代码有效.

在Python 3中,可能有助于明确声明池中将有多少处理器(即同时进程的数量).

尝试使用p = mp.Pool(1)

import multiprocessing as mpimport timedef do_something(text):    print('Out: ' + text,flush=True)    # do some awesome stuff hereif __name__ == '__main__':    p = None    while True:        message = input('In: ')        if not p:            p = mp.Pool(1)        p.apply_async(do_something,))
总结

以上是内存溢出为你收集整理的Python multiprocessing.Pool不会立即启动全部内容,希望文章能够帮你解决Python multiprocessing.Pool不会立即启动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存