学习笔记(33):Python网络编程&并发编程-进程池线程池

立即学习:https://edu.csdn.net/course/play/24458/296451?utm_source=blogtoedu

进程池与线程池:

一般应用在网站上,进程池或线程池最大的数量一般需要尽可能地大但是不要超出服务器的承载范围

1.进程池:

1)concurrent.futures.ProcessPoolExecutor(n)

2)创建了一个进程池,池中含有n个进程,任务都由这n个进程来完成

3)n默认为cpu的核数

4)pool.shutdown():表示关闭了新提交任务给进程池的入口,且等待进程池执行结束后再进行后面的代码

from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor#进程池与线程池
import os,random,time
def processpool(name):
    print('pid:%s ; %s:running'%(os.getpid(),name))
    time.sleep(random.randint(2,5))

if __name__ == '__main__':
    pool = ProcessPoolExecutor(5)#创建一个进程池,池子里面有5个进程
    for i in range(10):
        pool.submit(processpool,'任务%s'%i)
    pool.shutdown(wait=True)
    print('zhu')

运行结果:由结果可知,进程的pid只有5个,10个任务一直都是由这5个进程来完成

'''
"F:\software install\python3.6.4\python.exe" C:/Users/jinlin/Desktop/python_further_study/并发编程/进程池线程池.py
pid:11848 ; 任务0:running
pid:13740 ; 任务1:running
pid:12848 ; 任务2:running
pid:7196 ; 任务3:running
pid:10884 ; 任务4:running
pid:11848 ; 任务5:running
pid:13740 ; 任务6:running
pid:12848 ; 任务7:running
pid:7196 ; 任务8:running
pid:10884 ; 任务9:running
zhu

进程已结束,退出代码0

'''

2.线程池

1)concurrent.futures.ThreadPoolExecutor(n)

2)创建了一个线程池,池中含有n个线程,任务都由这n个线程来完成

3)pool.shutdown():表示关闭了新提交任务给线程池的入口,且等待线程池执行结束后再进行后面的代码

from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor#进程池与线程池
from threading import currentThread
import os,random,time
def processpool(name):
     print('%s pid:%s ; %s:running'%(currentThread().getName(),os.getpid(),name))
    time.sleep(random.randint(2,5))

if __name__ == '__main__':
    pool = ThreadPoolExecutor(5)#创建一个进程池,池子里面有5个进程
    for i in range(10):
        pool.submit(processpool,'任务%s'%i)
    pool.shutdown()
    print('zhu')

运行结果:由结果可以知道,线程池的所有线程的pid都是一样的,那是因为线程池中的线程都是在同一个进程中,因此pid会一致,且只有5个线程在执行任务

'''
"F:\software install\python3.6.4\python.exe" C:/Users/jinlin/Desktop/python_further_study/并发编程/进程池线程池.py
ThreadPoolExecutor-0_0 pid:11888 ; 任务0:running
ThreadPoolExecutor-0_1 pid:11888 ; 任务1:running
ThreadPoolExecutor-0_2 pid:11888 ; 任务2:running
ThreadPoolExecutor-0_3 pid:11888 ; 任务3:running
ThreadPoolExecutor-0_4 pid:11888 ; 任务4:running
ThreadPoolExecutor-0_3 pid:11888 ; 任务5:running
ThreadPoolExecutor-0_2 pid:11888 ; 任务6:running
ThreadPoolExecutor-0_1 pid:11888 ; 任务7:running
ThreadPoolExecutor-0_4 pid:11888 ; 任务8:running
ThreadPoolExecutor-0_0 pid:11888 ; 任务9:running
zhu

进程已结束,退出代码0


'''

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值