Python多核编程

Lar*_*rry 11 python multicore multiprocess

请考虑如下课程:

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

    def do_task(self):
        #do something with data 
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我有一个包含几个Foo类实例的列表.目的是执行do_task所有Foo对象.第一个实现很简单:

 #execute tasks of all Foo Object instantiated
 for f_obj in my_foo_obj_list:
     f_obj.do_task()
Run Code Online (Sandbox Code Playgroud)

我想利用多核架构共享for我机器的4个CPU之间的循环.

最好的方法是什么?

tim*_*rau 17

您可以在多处理模块中使用进程池.

def work(foo):
    foo.do_task()

from multiprocessing import Pool

pool = Pool()
pool.map(work, my_foo_obj_list)
pool.close()
pool.join()
Run Code Online (Sandbox Code Playgroud)

  • @FlashThunder 当`pool.join()` 返回所有进程完成时。 (2认同)

Dr.*_*lch 8

我想参考一篇由Ryan W. Smith撰写的文章:Python中的多核和分布式编程,而不是通过所有的多线程/多核基础知识.

他将详细介绍如何利用多个内核并使用这些概念.但是如果你不熟悉一般的多线程概念,请小心这些东西.

功能编程还允许您自定义每个核心的算法/功能.