如何编程以使用计算机上的所有处理器?
我在我的Windows电脑上运行一个单线程的Python程序,这个程序需要处理大量数据。我的电脑有8个处理器。当我在Windows任务管理器的性能标签下查看CPU使用情况时,发现我只用了很小一部分的处理能力。只有一个处理器被充分利用,其他的几乎都闲着。那我该怎么做才能让所有的处理器都被用上呢?多线程能解决这个问题吗?
6 个回答
2
多线程是指在一个程序中同时运行多个任务,这在一个进程中是需要的。但这并不一定是解决问题的办法;处理器亲和性可能会把这些任务限制在某些特定的核心上,即使你有足够的线程可以使用所有的核心。
2
如果你的程序适合的话,可以使用 Python的多进程模块,这样会有很多好处。
多进程模块可以让你同时运行多个Python进程,这样就能避免因为全局解释器锁(GIL)带来的问题,因此你可以充分利用计算机的所有核心来运行Python代码。它有一个简单的线程映射功能,也可以作为更复杂方案的基础。
这个模块和并行Python有点像,但它只能在本地计算机上使用,并且从Python 2.6及更高版本就已经包含在内了。可以把它比作Python的线程功能。
6
多线程无法充分利用额外的处理器或核心。
你应该创建新的进程,而不是新的线程。
在我见过的所有工具中,这个工具是最简单的: parallel python
概述:
PP是一个Python模块,它提供了一种在多处理器系统(有多个处理器或核心的系统)和集群(通过网络连接的计算机)上并行执行Python代码的机制。
它轻量、易于安装,并且可以与其他Python软件很好地集成。
PP是一个开源的跨平台模块,完全用Python编写。