首页 > 编程语言 >Python asyncio

Python asyncio

时间:2024-02-19 20:35:42浏览次数:38  
标签:__ 协程 携程 Python 线程 loop asyncio

asyncio

作用

  • 提供了对携程的支持
  • 非阻塞: 协程允许在等待异步操作的同时执行其他任务,而不会阻塞整个程序。
  • 轻量: 相对于线程和进程,协程的开销较小,因为它们在单线程中执行。
  • 使用async/await语法: async def声明协程函数,await用于等待异步操作的完成。
  • 事件循环: 协程需要在事件循环中运行,asyncio模块提供了事件循环的支持。

协程和线程(可以理解为一个是用户级,一个是系统级)

  • 携程
    • 在携程中,程序员编写的代码负责主动让出CPU的控制权。
    • 属于轻量级的线程
  • 线程
    • 操作系统控制CPU的控制权(单核CPU执行多个进程就是这样的)

携程的定义和使用

自动获取当前线程的event_loop

# 定义携程
async def show_msg() -> None:
    print('show')
    await asyncio.sleep(0.8)
    print('msg')


# 使用协程
if __name__ == "__main__":
    # asyncio.run() 本身是同步的
    asyncio.run(show_msg())

手动获取当前的 event_loop

import asyncio

async def main():
    # 获取当前'线程'事件循环
    loop = asyncio.get_event_loop()

    # 将任务丢进事件循环里面
    task = loop.create_task(show_msg())

    # 阻塞当前携程等待任务完成
    await task

# 运行主协程
asyncio.run(main())

标签:__,协程,携程,Python,线程,loop,asyncio
From: https://www.cnblogs.com/sqmw/p/18021893

相关文章

  • Python生成词云--豆瓣电影短评(初学菜鸡版)
    Python生成词云--豆瓣电影短评(初学菜鸡版)目录Python生成词云--豆瓣电影短评(初学菜鸡版)1.主要涉及的库2.获取数据3.生成词云图1.主要涉及的库主要页面处理selenium数据处理,输出、读取CSVpandas、numpy对所有数据进行分词处理jieba处理图片,生成词云图word......
  • Python异步编程原理篇之IO多路复用模块selector
    selector简介selector是一个实现了IO复用模型的python包,实现了IO多路复用模型的select、poll和epoll等函数。它允许程序同时监听多个文件描述符(例如套接字),并在其中任何一个就绪时进行相应的操作。这样可以有效地管理并发I/O操作,提高程序的性能和资源利用率。本篇主要......
  • Python Paramiko模块-exec_command() 和 invoke_shell() 两种操作方式
    前言Paramiko是Python语言的一个SSH客户端。可以远程连接Linux服务器,通过python对Linux进行操作,可以实现进行对远程服务器进行下载和上传文件操作。exec_command()操作importparamikossh=paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAd......
  • Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化
    全文链接:https://tecdat.cn/?p=33566原文出处:拓端数据部落公众号生成对抗网络(GAN)是一种神经网络,可以生成类似于人类产生的材料,如图像、音乐、语音或文本。最近我们被客户要求撰写关于GAN生成对抗性神经网络的研究报告,包括一些图形和统计输出。近年来,GAN一直是研究的热门话题。F......
  • python实战:用SQLAlchemy作orm
    一,安装SQLAlchemy1,用pip安装(venv)[liuhongdi@imgnews]$pip3installsqlalchemy2,安装完成后查看已安装的版本:(venv)[liuhongdi@imgnews]$pip3showsqlalchemyName:SQLAlchemyVersion:2.0.27Summary:DatabaseAbstractionLibraryHome-page:https://www......
  • python pyKafka
    1importjson2importtraceback3fromdatetimeimportdatetime4importtime5frompykafkaimportKafkaClient6fromutilsimport*78#生成报文信息:process_message_event报文9defcreate_data():10data={11"mess......
  • 基于python+django+vue.js开发的学生成绩管理系统
    功能介绍平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。源码地址https://github.com/geeeeeeeek/python_score演示地址http://score.gitapp.cn演示......
  • 基于python+django+vue.js开发的社区养老管理系统
    功能介绍平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。功能包括:老人管理、护工管理、亲属管理、病史管理、房间管理、活动管理、用户管理、日志管理、系统信息模块。源码地址https://github.com/geeeeeeeek/python_yanglao演示地址http:/......
  • 基于python+django+vue.js开发的健身房管理系统
    功能介绍平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。功能包括:教练管理、会员管理、场地管理、设备管理、用户管理、日志管理、系统信息模块。源码地址https://github.com/geeeeeeeek/python_fitness演示地址http://fitness.gitapp.cn......
  • 基于python的家政预约管理系统
    功能介绍平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、详情页、用户中心、家政入驻模块。后台功能包括:总览、家政管理、分类管理、标签管理、评论管理、用户管理、运营管理、日志管理......