asyncio与线程有何不同?
创始人
2024-09-21 07:30:23
0

异步I/O和多线程都是解决并发的方法,但它们有很大的区别。asyncio主要是依靠一个消息循环来实现异步I/O,而线程是操作系统提供的原生并发模型。下面是一个简单的示例程序来说明它们的不同:

使用线程实现并发:

import threading

def worker():
    print("Worker")
    return

threads = []
for i in range(5):
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()

使用asyncio实现并发:

import asyncio

async def worker():
    print("Worker")
    return

async def main():
    tasks = []
    for i in range(5):
        task = asyncio.ensure_future(worker())
        tasks.append(task)

    await asyncio.gather(*tasks)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

从代码中可以看出,使用线程需要手动创建和管理线程,而使用asyncio可以通过一系列的协程来实现并发。此外,在异步I/O中,当一个协程遇到I/O操作时会自动挂起,而线程需要主动进行阻塞等待。

相关内容

热门资讯

透视开挂!wepoker有透视... 透视开挂!wepoker有透视底牌吗(透视)pokemmo脚本手机版,教程法子(有挂存在)-哔哩哔哩...
透视解密!wepoker有插件... 透视解密!wepoker有插件吗(透视)hhpoker破解工具,教程法门(有挂教学)-哔哩哔哩;1、...
透视曝光!pokemmo辅助器... 透视曝光!pokemmo辅助器脚本下载(透视)wepoker私人局怎么玩,教程模板(真的有挂)-哔哩...
透视关于!wepoker底牌透... 透视关于!wepoker底牌透视(透视)wepoker手机版辅助,教程课程(的确有挂)-哔哩哔哩运w...
透视解密!we-poker辅助... 透视解密!we-poker辅助软件教程(透视)wpk模拟器是什么,教程手筋(有挂解密)-哔哩哔哩1、...
透视详情!德州私人局怎么透视(... 透视详情!德州私人局怎么透视(透视)hhpoker德州透视挂,教程方式(有挂细节)-哔哩哔哩该软件可...
透视教你!如何下载wpk透视版... 透视教你!如何下载wpk透视版(透视)wepoker辅助器软件下载,教程法子(有挂规律)-哔哩哔哩1...
透视普及!wepokerplu... 透视普及!wepokerplus辅助(透视)红龙poker辅助工具,教程要领(有挂方法)-哔哩哔哩亲...
透视详细!we poker插件... 透视详细!we poker插件(透视)红龙poker有辅助吗,教程秘籍(有挂秘笈)-哔哩哔哩该软件可...
透视开挂!有没有人wepoke... 透视开挂!有没有人wepoker(透视)wepoker怎么获得好牌,教程技法(今日头条)-哔哩哔哩1...