美文网首页
进程之进程池

进程之进程池

作者: 遇明不散 | 来源:发表于2019-04-19 10:02 被阅读0次

进程池

产生原因

如果有大量任务需要多进程完成,则可能需要频繁的创建删除进程,给进算计带来较多的资源消耗。

进程池的原理

创建适当的进程放入进程池,用来处理待处理事件,处理完毕后进程不销毁,仍然在进程池中等待处理其他事件,直到事件全部处理完毕,进程退出。 进程的复用降低了资源的消耗。

进程池的创建

  • 创建进程池,在池内放入合适数量的进程
  • 将事件加入进程池的等待队列
  • 使用进程池内的进程不断的执行等待事件,直到所有事件执行完毕
  • 所有事件处理完毕后,关闭进程池,回收进程池

进程池的具体操作

  • Pool(processes)
    • 功能:创建进程池对象
    • 参数:进程池中进程的数量
  • apply_async()
    • 功能:以异步的方式将要执行的事件放入进程池
    • 参数:
      • func 要执行的函数
      • args 给函数按位置传参
      • kwds 给函数按照键值传参
    • 返回值:
      返回一个代表进程池事件的对象,可以通过调用get()函数获取事件函数return的内容
  • apply()
    按照顺序添加要执行的事件,执行一个再添加一个
  • close()
    关闭进程池,使其不能再加入新的事件
  • join()
    阻塞等待进程池将事件都执行结束后回收进程池
  • map()
    类似于内建函数map,将第二个参数的迭代对象中的数据逐个带入第一个函数作为参数。只不过兼顾了apply_async功能,将函数放入进程池
# pool.py
from multiprocessing import Pool
import time

def worker(msg):
    time.sleep(1)
    print(msg)
    return time.ctime()

pool = Pool(processes = 4)

result = []

for i in range(10):
    msg = 'Hello %d world' % i
    r = pool.apply_async(func = worker,args = (msg,))
    result.append(r)

pool.close()
pool.join()

for i in result:
    print(i.get())


# pool_map.py
from multiprocessing import Pool
import time

def fun(n):
    time.sleep(1)
    print('pool map')
    return n * n

pool = Pool(4)

r = pool.map(fun,range(10))
pool.close()
pool.join()
print(r)

相关文章

  • 进程之进程池

    进程池 产生原因 如果有大量任务需要多进程完成,则可能需要频繁的创建删除进程,给进算计带来较多的资源消耗。 进程池...

  • Python - 进程与线程

    进程和线程 进程之间的通信: q = multiprocessing.Queue()进程池之间的通信: q = m...

  • Python-进程VS线程

    进程和线程 进程之间的通信: q = multiprocessing.Queue()进程池之间的通信: q = m...

  • 【第53天】python全栈从入门到放弃

    1进程之间共享内存 2进程池的异步任务处理,返回1-10000之间的数字 3进程池的同步任务处理 4 多进程做任务...

  • 8.进程间通信与进程池

    进程间通信与进程池 进程间通信-Queue 通常利用multiprocessing模块的Queue实现多线程之间的...

  • Android 关于IPC机制的理解(一)

    IPC是什么IPC(Inter-Process Communication)指的是进程间通信,也就是两个进程之间进...

  • 第1篇 Linux多线程

    进程 在理解线程之前,首先需要了解UNIX/Linux进程。 进程是由操作系统创建的,需要相当数量的“开销”。 进...

  • python高级 6 进程

    进程、进程的使用、进程注意点、进程间通信-Queue、进程池Pool、进程与线程对比、文件夹拷贝器-多任务 1.进...

  • 多线程基础

    线程和进程的基本概念 一、进程和线程 进程 进程:指在系统中正在运行的一个应用程序。 每个进程之间是独立的,每个进...

  • Python 并发编程之线程池/进程池

    引言 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程...

网友评论

      本文标题:进程之进程池

      本文链接:https://www.haomeiwen.com/subject/ztnfgqtx.html