浅谈Python之协程和线程
一、基本介绍
线程(Threading)
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。Python的threading
模块允许你创建线程,以并行地执行任务。
协程(Coroutine)
协程是一种程序组件,它允许挂起和恢复执行,通常用于异步编程。在Python中,协程可以通过asyncio
库实现,这是Python用于编写单线程并发代码的库。
协程 + 线程
虽然协程主要用于异步I/O操作,但有时你可能需要在协程中执行阻塞操作,比如访问数据库或调用外部API。在这种情况下,你可以将阻塞操作放在线程中执行,以避免阻塞整个协程的执行。
二、简单示例
import asyncio
import threading
# 这是一个阻塞函数,模拟耗时的I/O操作
def blocking_io():
import time
print("Start blocking IO")
time.sleep(2) # 模拟耗时操作
print("End blocking IO")
return "Blocking IO result"
# 这是一个异步函数,它将在协程中运行
async def main():
print("Start main coroutine")
# 创建一个线程来运行阻塞函数
thread = threading.Thread(target=blocking_io)
thread.start()
# 等待线程完成
thread.join()
# 继续协程的其他工作
print("Continue with coroutine")
await asyncio.sleep(1) # 模拟异步操作
print("End main coroutine")
# 运行事件循环
asyncio.run(main())
原文地址:https://blog.csdn.net/a876106354/article/details/142449846
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!