gpt4 book ai didi

python - 在 Python 中决定子进程、多处理和线程?

转载 作者:IT老高 更新时间:2023-10-28 21:08:29 24 4
gpt4 key购买 nike

我想并行化我的 Python 程序,以便它可以在运行它的机器上使用多个处理器。我的并行化非常简单,因为程序的所有并行“线程”都是独立的,并将它们的输出写入单独的文件。我不需要线程来交换信息,但我必须知道线程何时完成,因为我的管道的某些步骤取决于它们的输出。

可移植性很重要,因为我希望它可以在 Mac、Linux 和 Windows 上的任何 Python 版本上运行。鉴于这些限制,哪个是最适合实现这一点的 Python 模块?我试图在线程、子进程和多处理之间做出决定,它们似乎都提供了相关的功能。

对此有何想法?我想要最简单的可移植解决方案。

最佳答案

multiprocessing是一种很棒的瑞士军刀式模块。它比线程更通用,因为您甚至可以执行远程计算。因此,这是我建议您使用的模块。
subprocess模块还允许您启动多个进程,但我发现它不如新的多处理模块方便使用。

线程是出了名的微妙,并且,对于 CPython,您通常仅限于一个核心和它们(尽管如其中一条评论所述,全局解释器锁 (GIL) 可以在从 Python 代码调用的 C 代码中释放) .

我相信您引用的三个模块的大部分功能都可以以独立于平台的方式使用。在便携性方面,请注意 multiprocessing自 Python 2.6 以来才成为标准(不过,确实存在某些旧版 Python 的版本)。但它是一个很棒的模块!

关于python - 在 Python 中决定子进程、多处理和线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com