Python 多核编程

13 投票
2 回答
56246 浏览
提问于 2025-04-18 05:47

请考虑下面这个类:

class Foo:
    def __init__(self, data):
        self.data = data

    def do_task(self):
        #do something with data 

在我的应用程序中,有一个列表,里面包含了多个Foo类的实例。我的目标是对所有的Foo对象执行do_task这个方法。最初的实现方式很简单:

 #execute tasks of all Foo Object instantiated
 for f_obj in my_foo_obj_list:
     f_obj.do_task()

我想利用我机器上的多核架构,把for循环的工作分配到4个CPU上。

有什么好的方法可以做到这一点呢?

2 个回答

12

与其逐个讲解多线程和多核的基础知识,不如推荐一篇Ryan W. Smith的文章:Python中的多核和分布式编程

他会详细介绍如何利用多个核心以及如何使用这些概念。不过,如果你对多线程的一般概念不太熟悉,使用这些内容时要小心。

函数式编程也可以让你为每个核心定制算法或函数。

22

你可以在多进程模块中使用 进程池

def work(foo):
    foo.do_task()

from multiprocessing import Pool

pool = Pool()
pool.map(work, my_foo_obj_list)
pool.close()
pool.join()

撰写回答