Python 模块 "Processing"、"Multiprocessing" 和其他并发模块:有什么区别?
Python modules "Processing", "Multiprocessing" and other concurrency modules: what are the differences?
我开始阅读并行化 Python 代码的可能方法。
免责声明。这不是关于多处理与多线程的问题。
在这个 link https://ipyparallel.readthedocs.io/en/latest/demos.html 可以找到对几个
Python 的并发包以避免 GIL:https://scipy.github.io/old-wiki/pages/ParallelProgramming
-IPython1
-mpi4py
-平行python
-Numba
还有一个多处理包:
https://docs.python.org/3/library/multiprocessing.html
还有一个叫做处理:
https://pypi.org/project/processing/
首先,我完全不清楚上面后两者之间的区别; multiprocessing模块和processing模块在使用上有什么区别?
总的来说,我无法理解所有这些之间的区别——这些区别肯定存在,因为一些开发人员努力为 C++ 中使用的 MPI 创建了 mpi4py 版本。我想这不仅仅是关于“线程”和“多处理”方法之间的二元论,在一种情况下内存是共享的,而另一种情况下每个进程都有自己的内存和解释器,所有这些不同的东西之间必须有更多不同那里有包裹。
感谢所有愿意花时间回答这个问题的人!
不同的是上一版处理的是released in April of 2008 and multiprocessing was added in Python 2.6 in October 2008.
processing 是在 multiprocessing 与 Python 一起分发之前使用的库。
至于为多处理设计的其他模块之间的具体区别:您链接的 scipy 页面说“这是计算机科学研究生课程的主题,我不打算解决它在这里....您可以使用一些 python 工具来实施您在该研究生课程中学到的东西。”虽然他们承认这可能有点夸张,但通常需要对多处理进行独立研究才能辨别这些库之间的区别,您可能应该在了解其工作原理时坚持使用内置的多处理模块进行初始实验.如果您更熟悉多处理,您可能想查看 pathos framework.
但以下是您提到的软件包的基础知识:
Numba 添加了自动编译函数的装饰器,使它们 运行 更快,它并不是一个真正的多处理工具,而是一个 JIT 编译工具。
Parallel Python 克服了 GIL 以利用多核或多台计算机,它的设计易于使用并处理幕后所有复杂的事情。
Python 的 MPI 类似于 Paralell Python,不太强调简单性。
IPython 是一个具有许多功能的工具包,包括 shell 和 Jupyter 内核,它也不是真正的多处理工具。
请记住,很多 libraries/modules 都在做同样的事情,没有必要存在一个以上的原因。使用适合您的任何东西。
我开始阅读并行化 Python 代码的可能方法。
免责声明。这不是关于多处理与多线程的问题。
在这个 link https://ipyparallel.readthedocs.io/en/latest/demos.html 可以找到对几个 Python 的并发包以避免 GIL:https://scipy.github.io/old-wiki/pages/ParallelProgramming
-IPython1
-mpi4py
-平行python
-Numba
还有一个多处理包: https://docs.python.org/3/library/multiprocessing.html
还有一个叫做处理: https://pypi.org/project/processing/
首先,我完全不清楚上面后两者之间的区别; multiprocessing模块和processing模块在使用上有什么区别?
总的来说,我无法理解所有这些之间的区别——这些区别肯定存在,因为一些开发人员努力为 C++ 中使用的 MPI 创建了 mpi4py 版本。我想这不仅仅是关于“线程”和“多处理”方法之间的二元论,在一种情况下内存是共享的,而另一种情况下每个进程都有自己的内存和解释器,所有这些不同的东西之间必须有更多不同那里有包裹。
感谢所有愿意花时间回答这个问题的人!
不同的是上一版处理的是released in April of 2008 and multiprocessing was added in Python 2.6 in October 2008.
processing 是在 multiprocessing 与 Python 一起分发之前使用的库。
至于为多处理设计的其他模块之间的具体区别:您链接的 scipy 页面说“这是计算机科学研究生课程的主题,我不打算解决它在这里....您可以使用一些 python 工具来实施您在该研究生课程中学到的东西。”虽然他们承认这可能有点夸张,但通常需要对多处理进行独立研究才能辨别这些库之间的区别,您可能应该在了解其工作原理时坚持使用内置的多处理模块进行初始实验.如果您更熟悉多处理,您可能想查看 pathos framework.
但以下是您提到的软件包的基础知识:
Numba 添加了自动编译函数的装饰器,使它们 运行 更快,它并不是一个真正的多处理工具,而是一个 JIT 编译工具。
Parallel Python 克服了 GIL 以利用多核或多台计算机,它的设计易于使用并处理幕后所有复杂的事情。
Python 的 MPI 类似于 Paralell Python,不太强调简单性。
IPython 是一个具有许多功能的工具包,包括 shell 和 Jupyter 内核,它也不是真正的多处理工具。
请记住,很多 libraries/modules 都在做同样的事情,没有必要存在一个以上的原因。使用适合您的任何东西。