Python编程:trio模块异步/等待本地I/O库
  TEZNKK3IfmPf 2023年11月15日 43 0

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月30日   50   0   0 htmlhtml5
  TEZNKK3IfmPf   2024年04月26日   36   0   0 htmlScala
  TEZNKK3IfmPf   2024年05月17日   44   0   0 github
  TEZNKK3IfmPf   2024年04月19日   56   0   0 javagithub
  TEZNKK3IfmPf   2024年04月26日   40   0   0 gitgithub
TEZNKK3IfmPf