Python多进程Pool进程池的使用

 时间:2026-02-14 23:56:50

1、打开Python开发工具IDLE,新建‘poll.py’文件,写代码如下:

from multiprocessing import Pool

def fun(x):

    return x*2

if __name__ == '__main__':

    p = Pool(5)      #如果参数为空,默认为os.cpu_count()

    print(p.map(fun, [1, 2, 3]))

注意这里一定要写if __name__ == '__main__':在多进程程序里,必须指明主进程

Python多进程Pool进程池的使用

2、F5运行程序,很快打印出列表每项乘以2后的结果,[2, 4, 6] 这个计算的速度肯定比不用多进程快,尤其数据很大的时候,这里就不去测试。

Python多进程Pool进程池的使用

3、还有另外一种方法,也能实现同样的功能,改写‘pool.py’代码如下:

from multiprocessing import Pool

def fun(x):

    return x*2

if __name__=='__main__':

    p = Pool(5)

    list1=[]

    for i in range(5):

        print (i)

        res = p.apply_async(fun,[i,])

        list1.append(res)

    for j in list1:

        print (j.get())

这个看起来更好理解一点,apply_async(fun,[i,])是创建异步进程的方法,进程创建后立即执行,get()用于获取内容,注意不能再第一个循环里用,不然会等待进程get返回值阻塞主进程的继续执行。

Python多进程Pool进程池的使用

4、F5运行程序,很快打印出每项乘以2后的结果:

0

1

2

3

4

0

2

4

6

8

Python多进程Pool进程池的使用

5、如果需要等待所有进程结束再继续执行主进程,需要改写代码如下:

from multiprocessing import Pool

def fun(x):

    return x*2

if __name__=='__main__':

    p = Pool(5)

    list1=[]

    for i in range(5):

        print (i)

        res = p.apply_async(fun,[i,])

        list1.append(res)

    p.close()

    p.join()

    print('进程池创建的进程已结束')

    for j in list1:

        print (j.get())

p.close(),只是不允许再使用进程池创建新进程,必须在p.join()前

Python多进程Pool进程池的使用

6、F5运行程序,很快打印出进程池创建进程结束的消息以及每项乘以2后的结果:

0

1

2

3

4

进程池创建的进程已结束

0

2

4

6

8

Python多进程Pool进程池的使用

  • 毕业论文(word2007)如何快速添加引用格式
  • 提示,不在以下 request 合法域名列表中怎么办
  • visio如何自定义一个工具栏个性化
  • word中插入的图片都变成空白框了怎么办
  • 如何开启Intellij IDEA的Tips of Day小工具
  • 热门搜索
    怎么学英语口语 平面镜成像的特点 大别山主峰景区 seagull怎么读 剑门关景区 道士可以结婚吗 平遥古城旅游 跳一跳攻略 皮蛋凉拌的做法 众泰z700怎么样