自学内容网 自学内容网

浅谈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)!