当前位置:  开发笔记 > 编程语言 > 正文

python是否支持多处理器/多核编程?

如何解决《python是否支持多处理器/多核编程?》经验,为你挑选了3个好方法。

多处理器编程和多核编程有什么区别?最好在python中展示如何编写用于多道程序设计和多核编程的小程序的例子



1> Glyph..:

没有"多处理器"或"多核"编程这样的东西."多处理器"和"多核" 计算机之间的区别可能与您作为应用程序员无关; 它与内核如何共享内存访问权限的细微差别有关.

为了利用多核(或多处理器)计算机,您需要一个以可以并行运行的方式编写的程序,以及一个允许程序实际在多个核上并行执行的运行时(和操作系统,虽然您可以在PC上运行的任何操作系统都可以执行此操作.这实际上是并行编程,尽管并行编程有不同的方法.与Python相关的是多处理和多线程.

在C,C++,Java和C#等语言中,您可以通过执行多个线程来编写并行程序.CPython和PyPy运行时的全局解释器锁定排除了此选项; 但仅适用于那些运行时.(在我个人看来,多线程是危险和棘手的,Python通常会鼓励你不要将它视为获得性能优势的一种方式.)

如果你想编写一个可以在Python中运行多个核心的并行程序,你有几个不同的选择:

使用该threading模块编写多线程程序并在IronPython或Jython运行时中运行它.

使用该processing模块(现在包含在Python 2.6中作为multiprocessing模块),一次在多个进程中运行您的代码.

使用该subprocess模块运行多个python解释器并在它们之间进行通信.

使用Twisted和Ampoule.这样做的好处是,不仅可以跨不同的进程运行代码,而且(如果您不共享对文件之类的内容的访问权限)也可能跨越不同的计算机.

无论您选择哪种选项,您都需要了解如何将您的程序正在进行的工作拆分为有意义的分块.由于我不确定您正在考虑编写什么类型的程序,因此很难提供有用的示例.


那些是多处理器应用程序......不确定我是否明白了这一点.我想这样说:大多数人都明白"多核编程"和"多处理器编程"的含义.因此OP的问题可以转换为"是否有可能在python中编写在多个内核/处理器上运行的程序?" 你说的条款无效 - 嗯,它们是.这就是我想要添加的内容.
并不是说线程需要*思考*才能使用; 当然,所有编程都需要思考.线程的问题在于它们需要*在每一行代码中始终了解它们的存在*.相比之下,如果您使用消息传递进行编程,则可以忘记所有外部系统,直到您的功能完成并且是时候接收下一条消息.共享可变状态多线程编程对程序员产生持续的,严重的焦虑,或者为用户提供不可能再现的不断流.
*没有"多处理器"或"多核"编程* - 确定有.*多核*编程正在编写利用多核的应用程序.

2> rslite..:

正如在另一篇文章中所提到的,Python 2.6具有多处理模块,它可以利用多个核心/处理器(通过透明地启动多个进程来绕过GIL).它提供了一些类似于线程模块的原语.您可以在文档页面中找到一些(简单)用法示例.



3> Mapad..:

您实际上可以编写将使用多个处理器的程序.由于GIL锁定,您无法使用线程执行此操作,但您可以使用不同的进程执行此操作.或者:

使用 子进程模块,并划分代码以执行每个处理器的进程

看一下 parallelpython模块

如果使用python> 2.6,请查看多进程模块.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有