Python编程:trio模块异步/等待本地I/O库

本文介绍了一个基于Python的异步IO库Trio,并通过示例对比了同步与异步执行的效果。演示了如何使用Trio进行并发操作,显著提高程序效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

参考
异步爬虫写起来太麻烦?来试试 Trio 吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值