IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python中协程 -> 正文阅读

[Python知识库]python中协程

  1. 什么是协程?
    协程是一个微线程,程序员可以使用协程控制程序执行流程,协程在操作系统本身是不存在的,是程序员创造出来的
  2. 协程依赖的模块:greenlet
    在这里插入图片描述
    但是单纯的协程在程序中是没有意义的,所以一般在编写程序的时候,将协程与IO多路复用联合使用,可以提高并发的效率
    协程结合IO多路复用依赖模块gevent ,这个模块中,当协程每遇到一个IO操作的时候,并不是等待而是去执行别的代码片段
    在这里插入图片描述

在之前的单线程异步非阻塞中使用的是循环检测IO对象的变化提高并发,这是两个的区别,但是本质没有区别

协程代码:

import greenlet

def task1():
    print("这是任务一")
    gent2.switch()
    print("任务一正在执行")
    print("任务一结束")

def task2():
    print("这是任务二")
    print("任务二正在执行")
    gent1.switch()
    print("任务二结束")

gent1 = greenlet.greenlet(task1)   #greenlet(函数名,参数)
gent2 = greenlet.greenlet(task2)
gent1.switch()

协程与IO多路复用代码:

from gevent import monkey
#gevent 本质上也是依赖greenlet模块,但是使用gevent可以将协程与IO多路复用联系在一起
monkey.patch_all() #用于检测线程总所有地IO操作,遇到IO操作就会执行greenlet.switch()
import requests
import gevent

def get_request1(url):
    ret = requests.get(url)
    print(ret.content)

def get_request2(url):
    ret = requests.get(url)
    print(ret.content)

def get_request3(url):
    ret = requests.get(url)
    print(ret.content)

gevent.joinall([
    gevent.spawn(get_request1,"https://www.python.org/"),  #spwan(函数名,函数的参数)
    gevent.spawn(get_request2,"https://www.yahoo.com/"),
    gevent.spawn(get_request3,"https://github.com/"),
])
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:23:24  更:2022-01-04 13:24:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:37:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码