什么是进程池_进程池的实现

什么是进程池_进程池的实现今天学习了JIR、进程池和线程池GIL:GlobalInterpreterLock全局解释器锁锁的作用:为了避免资源竞争造成数据错乱python程序的执行过程1.启动解释器进程pyth

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  今天学习了JIR、进程池和线程池

  GIL:Global Interpreter Lock

  全局解释器锁

    锁的作用:为了避免资源竞争造成数据错乱

  python程序的执行过程

    1.启动解释器进程 python.exe

    2.解析你的py文件并执行它

  每个py程序中殴斗必须有解释器参与 解释器其实就是一堆代码

  相当于多个线程要调用同一个解释器代码 共享意味着竞争 竞争就要出事

  给解释器加互斥锁

  

  python中内存管理依赖于 GC(一段用于回收内存的代码) 也需要一个线程

  除了你自己开的线程 系统还有一些内置线程 就算你的代码不会去竞争解释器 内置线程也可能会竞争

  所以必须加上锁

  当一个线程遇到了I/O 同时解释器也会自动解锁 去执行其他线程 cpu会切换到其他程序

  解释器加锁以后

    将导致所有线程只能并发 不能达到真正的并行 意味着同一时间只有一个CPU在处理你的线程给你的感觉是效率低

  代码执行有两种状态

  阻塞 i/o 失去CPU的执行权 (CPU等待IO完成)

  非阻塞  代码正常执行 比如循环一千万次  中途CPU可能切换 很快会回来  (CPU在计算)

  假如有32核CPU 要处理一个下载任务  网络速度慢 只有100kb/s 文件大小为1024kb

  如果你的代码中IO操作非常多  cpu性能不能直接决定你的任务处理速度

  在IO密集的程序中 CPU性能无法直接决定程序的执行速度   python就应该干这种活儿

  在计算密集的程序中 CPU性能可以直接决定程序的执行速度

   

  计算密集测试                                                                                                                                                                        

from multiprocessing import Process
import time

#计算密集任务
def task1():
    sum = 1
    for i in range(10000000):
        sum *=i

def task2():
    sum = 1
    for i in range(10000000):
        sum *=i

def task3():
    sum = 1
    for i in range(10000000):
        sum *=i

def task4():
    sum = 1
    for i in range(10000000):
        sum *=i

def task5():
    sum = 1
    for i in range(10000000):
        sum *=i

def task6():
    sum = 1
    for i in range(10000000):
        sum *=i

if __name__ == '__init__':
    # 开始时间
    st_time = time.time()
    # 多进程情况下
    p1 = Process(target = task1)
    p2 = Process(target = task2)
    p3 = Process(target = task3)
    p4 = Process(target = task4)
    p5 = Process(target = task5)
    p6 = Process(target = task6)
    p1.start()
    p2.start()
    p3.start()
    p4.start()
    p5.start()
    p6.start()

    p1.join()
    p2.join()      
    p3.join()
    p4.join()
    p5.join()
    p6.join()
    print(time.time()-st_time)    
 '''
1.05321354643464
'''

 

 

  IO密集测试

  

from threading import Thread
import time

#计算密集任务
def task1():
    time.sleep(3)

def task2():
    time.sleep(3)

def task3():
    time.sleep(3)

def task4():
    time.sleep(3)

def task5():
    time.sleep(3)

def task6():
    time.sleep(3)

if __name__ == '__main__':
    #开始时间
    st_time = time.time()
    #多线程情况下
    t1 = Thread(target = task1)  
    t2 = Thread(target = task2)
    t3 = Thread(target = task3)
    t4 = Thread(target = task4)
    t5 = Thread(target = task5)
    t6 = Thread(target = task6)
    t1.start()
    t2.start()
    t3.start()
    t4.start()
    t5.start()
    t6.start()
    t1.join()
    t2.join()
    t3.join()
    t4.join()
    t5.join()
    t6.join()
    print(time.time - st_time)
    '''
    3.0035946873164
    '''

  二、进程池

  进程池就是一个装进程的容器

  为什么出现

    当进程很多的时候方便管理进程

  什么时候用?

    当并发量特别大的时候    例如双十一

    很多时候进程是空闲的  就让他进入进程池   让有任务处理时才从进程池取出来使用

  进程池使用

    ProcessPoolExecutor类

    创建时指定最大进程数  自动创建进程

    调用submit函数将任务提交到进程池中

    创建进程是在调用submit后发生的

  总结一下:

    进程池可以自动创建进程

    进程限制最大进程数

    自动选择一个空闲的进程帮你处理任务

  三、线程池

  和进程池差不多,使用的是ThreadPoolExcecutor类

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166583.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • B样条曲线(B-spline Curves)

    B样条曲线(B-spline Curves)关键字:NURBS,基函数,控制点,节点,另一个讲的很好的https://www.cnblogs.com/icmzn/p/5100761.html看了网上很多相关资料才得以下笔,资料太多,这里就不一一列举了,感谢各位大佬的资料本博客顺序不太好,看前面的东西可能需要提前看后面的东西。正在努力修炼,敬请谅解写了个B样条曲线计算的完成程序,包括绘图,https://download.c…

    2022年6月18日
    34
  • 函数重载与函数重写(有的书也叫做“覆盖”)的区别

    函数重载与函数重写(有的书也叫做“覆盖”)的区别

    2021年9月29日
    44
  • 网页视频下载方法[通俗易懂]

    问题有时候我们在做PPT或者撰写一些报告、案例的时候,需要一些视频作为素材,网上搜到后,想下载却比较麻烦,有的在专业视频网站上,有的在新闻网站上,有的在机构网站上,有的在社交媒体上,有没有简便、快速、可行的视频下载方法,并且不需要付费或者安装额外软件呢。下面说明几种方法,基本可以涵盖绝大多数情况。解决办法非专业视频网站上的视频以下两种办法需要使用谷歌浏览器Chrome电脑版打开视频所在的网页,右键——>审查元素——>点击左上角的小箭头——>在页面中选中视频界面——>在审查

    2022年4月8日
    89
  • 迪奥布兰度正在挑战fgo 小说_god eater resurrection

    迪奥布兰度正在挑战fgo 小说_god eater resurrectiongodis之aof持久化文章目录godis之aof持久化基本说明文件写入加载文件文件重写数据转化为redis命令外部调用基本说明在godis中,只有aof持久化,而没有rdb持久化。aof持久化分为三个基本的模块:将命令持久化到aof文件将aof文件的命令加载到内存aof文件重写文件写入handlerAof函数的作用是将命令持久化到aof文件中。它监听着aof通道并写入到aof文件,在初始化handler的时候,就开启一个子goroutine来执行这个函数。//监听aof通

    2022年10月8日
    3
  • asmx文件_将Web服务的实现与ASMX文件分开

    asmx文件_将Web服务的实现与ASMX文件分开asmx文件Afellowsaidrecentlythathewantedtobuilda”monsterwebservice”withover20classesandover20methods(well,notTHATmonster,butnotHelloWorld).Hesaid:一位同僚最近说,他想构建一个具有20多个类和20多种…

    2022年5月23日
    42
  • phpstorm安装+新建项目+phpstorm中文版

    phpstorm安装+新建项目+phpstorm中文版一 安装 phpstorm1 运行安装包 2 点击 next3 选择安装路径点击 next4 我的电脑系统是 windows64 位所以选择 64 bit5 点击 INSTALL 安装 6 安装成功后运行 phpstorm 选择 evaluateforf 然后点击 evaluate 二 新建项目 1 点击 newproject2 选择项目路径点击 create 创建项目三 中文 1 file gt settings2 plugins gt 搜索 chin

    2025年7月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号