python 进程池的简单使用方法

回到python,用一下python的进程池。

记得之前面试的时候,面试官问:你知道进程池的默认参数吗? 我没有回答上来,后来才知道,是有默认参数的。下面就看看它的默认参数

1. 不加参数

from multiprocessing.pool import Pool
from time import sleep

def fun(a):
    sleep(5)
    print(a)

if __name__ == ‘__main__‘:
    p = Pool()      # 这里不加参数,但是进程池的默认大小,等于电脑CPU的核数
                    # 也是创建子进程的个数,也是每次打印的数字的个数
    for i in range(10):
        p.apply_async(fun, args= (i, ))
    p.close()
    p.join()        # 等待所有子进程结束,再往后执行
    print("end")

2. 加参数5

from multiprocessing.pool import Pool
from time import sleep

def fun(a):
    sleep(5)
    print(a)

if __name__ == ‘__main__‘:
    p = Pool(5)     # 最多执行5个进程,打印5个数
    for i in range(10):
        p.apply_async(fun, args= (i, ))
    p.close()
    p.join()        # 等待所有子进程结束,再往后执行
    print("end")

原文地址:https://www.cnblogs.com/zrmw/p/9682776.html

时间: 2024-11-06 03:33:22

python 进程池的简单使用方法的相关文章

python 进程池pool简单使用

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

python 进程内存增长问题, 解决方法和工具

python 进程内存增长问题, 解决方法和工具 表现 解决方法 定位问题过程 gdb-python: 搞清楚python程序在做什么 准备gdb 接入gdb 查看线程 查看调用栈 coredump 其他命令 pyrasite: 连接进入python程序 psutil 查看python进程状态 guppy 取得内存使用的各种对象占用情况 无法回收的对象 不可回收对象的例子 ?? objgraph 查找循环引用 表现 运行环境: # uname -a Linux ** 3.10.0-327.el7

python进程池剖析(一)

python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要实现调用外部程序的功能,python的psutil模块是更好的选择,它不仅支持subprocess提供的功能,而且还能对当前主机或者启动的外部程序进行监控,比如获取网络.cpu.内存等信息使用情况,在做一些自动化运维工作时支持的更加全面.multiprocessing是python的多进程模块,主要

python进程池剖析(二)

之前文章中介绍了python中multiprocessing模块中自带的进程池Pool,并对进程池中的数据结构和各个线程之间的合作关系进行了简单分析,这节来看下客户端如何对向进程池分配任务,并获取结果的. 我们知道,当进程池中任务队列非空时,才会触发worker进程去工作,那么如何向进程池中的任务队列中添加任务呢,进程池类有两组关键方法来创建任务,分别是apply/apply_async和map/map_async,实际上进程池类的apply和map方法与python内建的两个同名方法类似,ap

Python 进程池

一.定义: 多进程是实现并发的手段之一,在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.                  Pool([numprocess [,initializer [, initargs]]]):创建进程池 二.主要参数: 1 numprocess:要创建的进程数,如果省略,将默认使用cpu_count()的值 2 initializer:是每个工作进程启动时要执行的可调用对象,默认为None 3 init

python进程池:multiprocessing.pool

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

python 进程池的使用

python的线程无法很好的利用到多cpu的功能,所以大家都比较推荐多进程 下面是进程池的用法,我这里是清洗redis的过期内容 close和join一定要做,否则会占用内存 import multiprocessing def process_redis(time_range): pass # 这里不详细写了 def clear_timeout_redis(): while 1: try: p_pool = multiprocessing.Pool(processes=6) # process

Python进程池

1 from multiprocessing import Pool 2 from time import sleep 3 def Foo(i): 4 sleep(1) 5 print(i) 6 7 8 if __name__ == "__main__": 9 #5个线程会同时执行 10 pool = Pool(5) 11 12 for i in range(50): 13 #从进程池中申请进程,还可以传入callback参数作为进程结束后的回调函数 14 pool.apply_asy

Python处理session最简单的方法

前言: 不管是在做接口自动化还是在做UI自动化,测试人员遇到的第一个问题都是卡在登录上. 那是因为在执行登录的时候,服务端会有一种叫做session的会话机制. 一个很简单的例子: 在做功能测试的时候,肯定会遇到一种测试场景,需要在没登录的时候进行一些普通操作,会提示“请先登录” 比如:我们在逛TB的时候,如果没有登录,那么当你搜索到一个商品,准备下单时候,是不是就会弹出一个登录框? 其实这就是利用到了session会话机制. 因为HTTP协议是无状态的,那么在下订单,加入购物车等场景时,服务器