Python编程:trio模块异步/等待本地I/O库
2023-09-14 09:07:15 时间
github: https://github.com/python-trio/trio
文档: https://trio.readthedocs.io/en/latest/tutorial.html
An async/await-native I/O library for humans and snake people
安装
pip install trio
代码示例
# -*- coding: utf-8 -*-
import trio
import time
# 计时器
def timer(func):
def inner(*args):
start = time.time()
ret = func(*args)
end = time.time()
print("{} time: {}".format(func.__name__, end - start))
return ret
return inner
############## 同步执行 ######################
def sync_add(x, y):
time.sleep(2)
print("sync_add: {}".format(x + y))
def sync_multiply(x, y):
time.sleep(2)
print("sync_multiply: {}".format(x * y))
@timer
def sync_func():
sync_add(1, 1)
sync_multiply(1, 1)
sync_func()
############## 异步执行 ######################
async def async_add(x, y):
await trio.sleep(2)
print("async_add: {}".format(x + y))
async def async_multiply(x, y):
await trio.sleep(2)
print("async_multiply: {}".format(x * y))
async def async_func():
async with trio.open_nursery() as nursery:
nursery.start_soon(async_add, 1, 1)
nursery.start_soon(async_multiply, 1, 1)
@timer
def run_async():
trio.run(async_func)
run_async()
执行结果
sync_add: 2
sync_multiply: 1
sync_func time: 4.00608491897583
async_multiply: 1
async_add: 2
run_async time: 2.0082740783691406
相关文章
- python 字符串基础练习
- 2.1pycharm 设置Python模块的搜索路径的方式「建议收藏」
- python监控网页内容变化_使用Python监控文件内容变化代码实例
- python setattr函数_Python内置函数(53)——setattr
- 【说站】python自定义模块的调用
- [1169]python编程WSGI服务器wsgiref模块
- Python基础(二十三):面向对象之继承介绍
- Python 投资实践
- 【使用Python实现算法】05 标准库(函数式编程模块)
- Python基础语法-函数的错误处理-常见异常类型
- python-数据库编程-如何在Python中连接到数据库
- python-Python与MongoDB数据库-处理MongoDB查询结果
- Python __file__属性:查看模块的源文件路径
- 小白的Python之路 day5 python模块详解及import本质编程语言
- Python数学运算的一个小算法(求一元二次方程的实根)详解编程语言
- Linux上的Python之旅(linux自带python)
- python-os:path模块详解编程语言
- Python sys模块常用方法
- Python轻松连接SQL Server数据库(python连接sqlserver)
- Linux系统下安装Python模块指南(linux安装python模块)
- python实现文件分组复制到不同目录的例子