asyncio和线程都是用于处理并发任务的工具,但它们之间有几个重要的区别。
编程模型:
await
和async
来定义协程函数。并发性能:
下面是一个使用asyncio的示例代码:
import asyncio
async def hello():
print("Hello")
await asyncio.sleep(1) # 模拟IO操作
print("World")
async def main():
await asyncio.gather(
hello(),
hello(),
hello()
)
asyncio.run(main())
这个示例代码定义了一个hello
协程函数,它会先打印"Hello",然后等待1秒钟,最后打印"World"。main
函数使用asyncio.gather
来并发执行多个hello
协程函数。
下面是一个使用线程的示例代码:
import threading
import time
def hello():
print("Hello")
time.sleep(1) # 模拟IO操作
print("World")
def main():
threads = []
for _ in range(3):
t = threading.Thread(target=hello)
t.start()
threads.append(t)
for t in threads:
t.join()
main()
这个示例代码定义了一个hello
函数,它会先打印"Hello",然后等待1秒钟,最后打印"World"。main
函数使用多线程的方式并发执行多个hello
函数。