3 回答
TA贡献2037条经验 获得超6个赞
没有“多处理器”或“多核”编程之类的东西。作为应用程序程序员,“多处理器” 计算机和“多核” 计算机之间的区别可能与您无关。它与内核如何共享对内存的访问的微妙之处有关。
为了利用多核(或多处理器)计算机,您需要以一种可以并行运行的方式编写程序,并需要一个运行时才能实际在多个核上并行执行该程序(并且操作系统,尽管您可以在PC上运行的任何操作系统都可以执行此操作)。这实在是并行编程,虽然有并行编程不同的方法。与Python相关的是多处理和多线程。
在C,C ++,Java和C#等语言中,您可以通过执行多个线程来编写并行程序。CPython和PyPy运行时中的全局解释器锁排除了该选项;但仅适用于那些运行时。(我个人认为,多线程是危险且棘手的,Python鼓励您不要将其视为获得性能优势的一种方式,这通常是一件好事。)
如果要编写一个可以在Python的多个内核上运行的并行程序,则有几种不同的选择:
使用该
threading
模块编写一个多线程程序,然后在IronPython或Jython运行时中运行它。使用该
processing
模块(现已包含在Python 2.6中作为multiprocessing
模块)可一次在多个进程中运行您的代码。使用该
subprocess
模块运行多个python解释器并在它们之间进行通信。使用扭曲和安瓿瓶。这样做的好处是不仅可以跨不同的进程运行代码,而且(如果您不共享对文件之类的访问权限)也可以跨不同的计算机运行。
无论选择这些选项中的哪一个,都将需要了解如何将程序正在完成的工作分成有意义的块以进行分离。由于我不确定您正在考虑编写哪种程序,因此很难提供有用的示例。
TA贡献1874条经验 获得超12个赞
Python 2.6具有多处理模块,该模块可以利用多个内核/处理器(它通过透明地启动多个进程来绕过GIL)。它提供了一些类似于线程模块的原语。您会在文档页面中找到一些(简单的)用法示例。
TA贡献1835条经验 获得超7个赞
您实际上可以编写将使用多个处理器的程序。由于GIL锁,您无法使用线程来执行此操作,但是可以使用其他进程来执行。要么:
使用子流程模块,并划分代码以每个处理器执行一个流程
添加回答
举报