为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

长风秋雁 2019-10-24 13:47:45
多处理器编程和多核编程之间有什么区别?最好在python中显示示例如何编写用于多程序和多核编程的小程序
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

没有“多处理器”或“多核”编程之类的东西。作为应用程序程序员,“多处理器” 计算机和“多核” 计算机之间的区别可能与您无关。它与内核如何共享对内存的访问的微妙之处有关。

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

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

如果要编写一个可以在Python的多个内核上运行的并行程序,则有几种不同的选择:

  • 使用该threading模块编写一个多线程程序,然后在IronPython或Jython运行时中运行它。

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

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

  • 使用扭曲和安瓿瓶。这样做的好处是不仅可以跨不同的进程运行代码,而且(如果您不共享对文件之类的访问权限)也可以跨不同的计算机运行。

无论选择这些选项中的哪一个,都将需要了解如何将程序正在完成的工作分成有意义的块以进行分离。由于我不确定您正在考虑编写哪种程序,因此很难提供有用的示例。


查看完整回答
反对 回复 2019-10-24
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-10-24
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您实际上可以编写将使用多个处理器的程序。由于GIL锁,您无法使用线程来执行此操作,但是可以使用其他进程来执行。要么:


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

看看parallelpython模块

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


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 745 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信