码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • eventlet 协程


    eventlet学习笔记之一:基本概念

    本系列文章翻译自英文官方文档,原文请访问官方文档

    基本用法

    如果这是您第一次使用Eventlet,您可能会发现设计模式文档中的示例是一个很好的起点。

    Eventlet是围绕绿色线程(即协程,我们使用术语可互换)的概念构建的,这些概念是为了进行与网络相关的工作而启动的。绿色线程与正常线程的区别主要有两种:

    • 绿线非常便宜,几乎是免费的。您不必像普通线程一样保存绿色线程。通常,每个网络连接至少会有一个绿色线程。
    • 绿色线程相互合作,而不是先发制人地安排。这种行为的主要优点是共享数据结构不需要锁,因为只有在显式调用yield时,另一个绿色线程才能访问数据结构。还可以检查诸如队列之类的原语以查看它们是否具有任何未决数据。

    主要API

    Greenthread Spawn

    eventlet.spawn(func, *args, **kw)

    创建一个绿色线程来执行func函数。多个绿色线程可以并发执行。spawn的返回值是一个greenthread.GreenThread对象,这个对象可以用来检索func函数的返回值或者异常信息。

    eventlet.spawn_n(func, *args, **kw)

    功能与spawn类似,但是没有返回值,也不抛异常。执行比spawn更快。

    eventlet.spawn_after(seconds, func, *args, **kw)

    spawn的延迟执行版本。

    注:Spawn是“量产”的意思。

    Greenthread 控制

    eventlet.sleep(seconds=0)

    挂起协程,使得别的协程可以执行。

    class eventlet.GreenPool

    用池化技术控制并发。使得内存消耗、并发连接数是可控的,并进而为系统中的其他部分预留资源。

    class eventlet.GreenPile(协程堆)

    GreenPile对象表示“任务块”。一个GreenPile是一个可以被塞满任务的迭代器,任务的结果会在稍后被读出。

    class eventlet.Queue

    在协程之间通信、传递数据的工具。

    class eventlet.Timeout

    在协程中添加超时机制的工具。在指定超时时间后,抛出异常。

    打补丁函数

    eventlet.import_patched(modulename, *additional_modules, **kw_additional_modules)

    eventlet.monkey_patch(all = True,os = False,select = False,socket = False,thread = False,time = False )

    导入绿化过的模块。

    便利的网络函数

    • eventlet.connect(addr, family=, bind=None)
    • eventlet.listen(addr, family=, backlog=50, reuse_addr=True, reuse_port=None)¶
    • eventlet.wrap_ssl(sock, *a, **kw)¶
    • eventlet.serve(sock, handle, concurrency=1000)
    • class eventlet.StopServe
  • 相关阅读:
    python爬虫开源项目代码基于Python实现的鲜花销售小程序
    SpringBoot+Vue实现前后端分离的教学管理平台
    git可视化工具-sourceTree
    算法分析与设计CH3:Growth of Functions
    vue3面试题:2022 最新前端 Vue 3.0 面试题及答案(持续更新中……)
    【深入浅出Spring原理及实战】「原理分析专题」重新回顾一下Spring框架的异步执行调用的原理和实战
    【计算机网络】广域网协议分析
    拜托,使用Three.js让二维图片具有3D效果超酷的好吗 💥
    Springboot+vue的入校申报审批管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
    LeetCode 2240. Number of Ways to Buy Pens and Pencils【数学,枚举;类欧几里得算法】1399
  • 原文地址:https://blog.csdn.net/qq_42533216/article/details/125887150
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号