Python pool.map 使我的脚本的其余部分更频繁地执行

发布于 2025-01-09 11:43:11 字数 333 浏览 0 评论 0原文

使用我的示例脚本

from multiprocessing import Pool


def methodUsingPool(x):
    if __name__ == '__main__':
        pool = Pool()
        pool.map(print, x)


methodUsingPool("x")
print("1")

输出

1
1
1
1
1
1
x
1

可以获得我一直期待的

x
1

为什么会这样?我能做些什么?

Using my sample script

from multiprocessing import Pool


def methodUsingPool(x):
    if __name__ == '__main__':
        pool = Pool()
        pool.map(print, x)


methodUsingPool("x")
print("1")

gets the output

1
1
1
1
1
1
x
1

while I've been expecting

x
1

Why is that so? What can I do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尹雨沫 2025-01-16 11:43:11

行为取决于您的操作系统。在 macOS(例如)上,您将获得与所显示的类似的输出。

但是,如果您这样做:

from multiprocessing import Pool

def methodUsingPool(x):
    with Pool() as pool:
        pool.map(print, x)

if __name__ == '__main__':
    methodUsingPool("x")
    print("1")

...无论平台如何,您都会获得预期的输出

请参阅:Python 3 多处理

Behaviour will depend on your operating system. On macOS (for example) you will get similar output to what you've shown.

However, if you do this:

from multiprocessing import Pool

def methodUsingPool(x):
    with Pool() as pool:
        pool.map(print, x)

if __name__ == '__main__':
    methodUsingPool("x")
    print("1")

...you'll get your expected output regardless of platform

See: Python 3 multiprocessing

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文