进程池(Pool)

进程池用于进程维护, 当使用时,将会去进程池取数据

from multiprocessing import Pool, Processimport os, time

def f(i):    time.sleep(2)    print(‘in process‘, os.getpid())  #os.getpid()获得进程序列号    return i+100

def Bar(arg):    print(‘exec done--‘, arg, os.getpid())

if __name__ == ‘__main__‘:    pool = Pool(5)     #最多放入5个进程

for i in range(10):      pool.apply_async(func=f, args=(i,), callback=Bar)  # callback回调函数, 子进程结束时,是否还做其他的事, apply_async是并行 和 apply是串行

print(‘end‘)    pool.close()    pool.join()  #进程池中程序结束时,关闭进程池,忽略程序直接结束, 不能与join()变换位置

原文地址:https://www.cnblogs.com/my-love-is-python/p/9164558.html

时间: 2024-10-12 18:37:17

进程池(Pool)的相关文章

Python多进程并发操作中进程池Pool的应用

  在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,10几个还好,但如果是上百个,上千个目标,手动的去限制进程数量却又太过繁琐,这时候进程池Pool发挥作用的时候就到了.      Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满, 那么就会创建一个新的进程用来执行该请求:但如果池中的进

进程池Pool

进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法. 初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求:但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程来执行,请看下面的实例

Pythn 使用进程池Pool进行并发编程

进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法. 初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求:但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会用之前的进程来执行新的任务,请看下

python 进程池pool简单使用

平常会经常用到多进程,可以用进程池pool来进行自动控制进程,下面介绍一下pool的简单使用. 需要主动是,在Windows上要想使用进程模块,就必须把有关进程的代码写if __name__ == ‘__main__’ :语句的下面,才能正常使用Windows下的进程模块.Unix/Linux下则不需要. Pool类 Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程来执行请求.如果池满,请求就会告知先等待,直到池中有进程结束, 才会

PYTHON多进程编码结束之进程池POOL

结束昨晚开始的测试. 最后一个POOL. A,使用POOL的返回结果 #coding: utf-8 import multiprocessing import time def func(msg): print 'msg:', msg time.sleep(3) print 'end' return 'done', msg if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) result = [] for i i

python进程之间修改数据[Manager]与进程池[Pool]

#前面的队列Queue和管道Pipe都是仅仅能再进程之间传递数据,但是不能修改数据,今天我们学习的东西就可以在进程之间同时修改一份数据 #Mnager就可以实现 import multiprocessing import random def f(l,n): l.append(n) if __name__ == '__main__': m = multiprocessing.Manager() m_dict = m.dict() m_list = m.list(range(4)) p_list

第35篇 进程之间的通信 Queue Pipe 进程池Pool,p.apply()方法,p.apply_async()方法

内容大纲: 进程之间的通讯 进程队列 管道 进程之间的数据共享 进程池 使用进程池 开启进程 提交任务 获得返回值 回调函数1.进程队列 先进先出 from multiprocessing import Queue import queue q = Queue() q.put(1) q.put(2) q.put(3) print(q.get()) print(q.get()) print(q.get()) 1 2 3 from multiprocessing import Queue impor

python 进程池Pool

1 #-*- coding:utf-8 -*- 2 from multiprocessing import Pool 3 import os,time,random 4 5 def long_time_task(name): 6 print 'Run task name %s and pid : %s..'%(name,os.getpid()) 7 start = time.time() 8 time.sleep(random.random()*3) 9 end = time.time() 10

python进程池pool的starmap的使用

#!/usr/bin/env python3 from functools import partial from itertools import repeat from multiprocessing import Pool, freeze_support def func(a, b): return a + b def main(): a_args = [1,2,3] second_arg = 1 with Pool() as pool: L = pool.starmap(func, [(