Python 多处理示例不执行任何操作

标签 python python-3.x multiprocessing

我正在尝试学习 python 多重处理,但是当我尝试运行文档中的以下示例代码时,没有任何反应。没有打印任何内容,没有异常(exception),什么也没有。

from multiprocessing import Process

def f(name):
    print('hello', name)

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

但是,另一个示例按预期工作:

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))

我检查过这是否是环境特定的问题,现在我更困惑了。如果我运行在 IDLE 中显示的第一个示例,它不起作用。如果我在命令提示符下的交互式解释器中运行它,它也不起作用。但是,如果我在命令提示符下运行具有相同代码的 .py 文件,它就可以工作。有谁知道实际发生了什么以及为什么运行相同的代码会产生不同的结果?

(如果这很重要的话,我目前使用的是 Windows 10 计算机)

最佳答案

由于替换了sys.stdout和company,IDLE有异常奇怪的行为;无论是否交互,您最终都会出现一些奇怪的行为。

多处理通常在交互式解释器中不能很好地工作,特别是在 Windows 上,“fork 模拟”无法真正正确地模拟它。

坚持在实际脚本中测试与多处理相关的内容。

关于Python 多处理示例不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48786923/

相关文章:

mysql - 在多线程中使用同一个数据库连接时,后面发生了什么?

python - django-过滤器 : icontains type of lookup expression doesn't work properly

python - 如何避免在 python 中对键存在和值 True 进行捆绑检查

python - OpenCV Python保存jpg指定质量;给出系统错误

python - 在使用多个正则表达式分析单个字符串时,线程或多处理能否提高性能?

java - 多CPU编程

python - 与 Google App Engine 上的 NDB 的多对多关系

python - 使用 pandas 或 Numpy 根据列数据选择一系列行

python - Python 3.6 SequenceMatcher().get_matching_blocks() 如何工作?

python - 将叶子与背景分开