python教程:使用gevent实现高并发并限制最大并发数

2023-09-21 14:31:04

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

import time
import gevent
from gevent.pool import Pool
from gevent import monkey
# 一,定义最大并发数
p = Pool(20)
# 二,导入gevent猴子补丁,没有它,协称就不会并发执行

monkey.patch_all()


#  三,耗时任务或者阻塞任务,异步执行的或者需要并发的就是它了
def task(i):
    time.sleep(i)
    print("----这里---------")


# 四,任务派发,将15个任务派发给协程去做
threads = [p.spawn(task, 5) for i in range(15)]

# 五,在此阻塞,等所有协程全部完成退出,这一步才执行完
gevent.joinall(threads)

以上demo代码,就实现了:

最大并发数20,超过20个并发,排队等待;

上述代码中,单个协程耗时五秒,那么并发15个,全部耗时,应该也是5秒多一点点。

加入一个时间,来看看是不是真的。比如:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import time
import gevent
from gevent.pool import Pool
from gevent import monkey
# 一,定义最大并发数
p = Pool(20)
# 二,导入gevent猴子补丁,没有它,协称就不会并发执行

monkey.patch_all()


#  三,耗时任务或者阻塞任务,异步执行的或者需要并发的就是它了
def task(i):
    time.sleep(i)
    print("----这里---------")

time_l=time.time()
# 四,任务派发,将15个任务派发给携程去做
threads = [p.spawn(task, 5) for i in range(15)]

# 五,在此阻塞,等所有协程全部完成退出,这一步才执行完
gevent.joinall(threads)

time_r=time.time()
print("总耗时:{}".format(time_r-time_l))

执行结果:

----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
----这里---------
总耗时:5.004504919052124

Process finished with exit code 0

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

更多推荐

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

Java版工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离功能清单如下:首页工作台:待办工作、消息通知、预警信息,点击可进入相应的列表项目进度图表:选择(总体或单个)项目显示1、项目进度图表2、项目信息施工地图:1、展示当前角色权限下能看到的施工地图(

DeepWalk实战---Wiki词条图嵌入可视化

DeepWalk是2014年提出的一种Graph中的Node进行Embedding的算法,是首次将自然语言处理领域NLP中的word2vec拓展到了graph。万事万物皆可embedding,所以DeepWalk我感觉在图机器学习中具有非常强的应用价值。1.首先打开AnacondaPrompt(Anaconda),创建

springboot集成kafka

创建工程父工程pom父工程做了子工程管理和包管理<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

R 语言的安装教程

一、下载相关软件1、R下载官网:R:TheRProjectforStatisticalComputing找到中国镜像,下载快历史版本点击这里2、Rtools下载进入镜像后,点击这里然后选择与上面下载的R版本相对应的版本即可3、Rstudio下载官网:Posit|TheOpen-SourceDataScienceComp

R语言ggpubr包优雅绘制带统计数据的箱线图

ggpubr包是个很经典的R包,能绘制专业的论文绘图,它是对ggplot2进行了加强,R包的说明也是介绍用于创建和自定义基于“ggplot2”的出版物绘图,就是个为SCI而生的R包呀,今天咱们使用ggpubr绘制专业的论文需要的带统计数据的箱线图下面咱们开始,先导入R包和数据,使用R软件自带的ToothGrowth数据

Python进阶复习-Pandas库

目录使用场合对象创建Series对象DataFrame对象Numpy与DataFrame处理缺失值分组groupby()函数apply()函数透视表使用场合Pandas库是基于Numpy库建立的为数据添加标签、处理缺失值、分组和透视表方面Pandas更高效对象创建Series对象Series是带标签的【默认是从0开始的

外国固定资产管理系统功能有哪些

很多公司都在寻找提高自己资产管理效益的方法。为了满足这一要求,国外的固定资产管理系统已经发展成多种形式。以下是国外一些常见的固定资产管理系统的特点:自动化和智能化:许多现代固定资产管理系统采用自动化和数字化技术,以简化流程,减少错误,提高数据准确性。这些系统通常包括电子库存管理、一键生成报告和实时跟踪资产位置。集成:国

拿到第一个用户并提权

搭建环境真机安装python环境(python-IDE)java环境(java-IDE)PHP环境(phpstudy)火狐浏览器延长支持板(需要安装HackBar扩展插件)notepad++虚拟机安装kalilinuxWin10(CFT工具包,为防止有后门不安装在真机)拿到第一个用户权限并获取root权限1.信息探测探

修复Ripro主题扫码后空白或null或array的问题

WordPressRipro主题使用的人比较多,绝大部分用的盗版主题,RiPro主题使用虎皮椒V3支付接口在使用弹窗支付的时候,微信或者支付宝扫码后出现null或array,会发生在ripro所有版本中。下面是修复方法:打开ripro主题inc目录下的core-ajax.php文件,即如图位置进行编辑:服务器是宝塔的用

2023中国文化科技融交会 | 虚拟动力邀您共探数字人技术助力文旅产业数字化创新

2023年9月21日,由江苏省委宣传部、江苏省科学技术厅、江苏省委网信办、江苏省文化和旅游厅、江苏省广播电视局、南京市人民政府联合主办的2023中国(南京)文化和科技融合成果展览交易会在南京国际博览中心(元通)盛大开幕。展会亮点广|州|虚|拟|动|力作为深耕3D、AI虚拟人领域技术产品7年的提供商及解决方案提供商,广州

提升技术招聘有效性| 杜绝候选人刷题应试

企业在技术人员招聘中,时常出现候选人“笔试考高分,工作写Bug,绩效来垫底”的尴尬窘境,让企业倍感煎熬。不仅浪费时间精力、也增大招人的成本投入。如何招到真正合适的技术人选,成为摆在企业心头的难题。合适的技术人才,意味能满足实际工作的需求,而非仅有一堆理论知识储备。对企业而言,候选人解决实际问题的工程能力>理论知识。技术

热文推荐