实现协程的三种方式

本文探讨了协程的三种实现方式,并对其进行了详细解释。通过学习,读者可以深入了解协程的工作原理及其在程序设计中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

14,写出协程实现的三种方式

利用yield实现协程
import time

def work1():
    # 循环打印数字1 
    while True:

        print("-----1-----")
        # yield可以暂时挂起该函数,跳转到调用该函数的下方
        yield
        # 延迟一秒以便观察
        time.sleep(1)

def work2():

    while True:

        print("-----2-----")
        yield
        time.sleep(1)


th1 = work1()
th2 = work2()

while True:
    # 唤醒被挂起的函数
    next(th1)
    next(th2)
利用greenlet实现协程
import time
import greenlet


def work1():
    # 循环打印字符串
    while True:

        print("----1----")
        # 启动th2
        th2.switch()
        time.sleep(1)

def work2():
    # 循环打印字符串
    while True:

        print("----2----")
        # 启动th1
        th1.switch()
        time.sleep(1)

# 创建携程
th1 = greenlet.greenlet(work1)
th2 = greenlet.greenlet(work2)
# 启动携程
th1.switch()
利用gevent实现协程
import gevent

import time


def work1():
    # 循环打印
    while True:

        print("----1----")
        # 破解sleep 使sleep不再阻塞
        gevent.sleep(1)

def work2():

    while True:

        print("----2----")

        gevent.sleep(1)

# 创建并开始执行携程
th1 = gevent.spawn(work1)
th2 = gevent.spawn(work2)
# 阻塞等待携程结束
gevent.joinall([th1,th2])

15,存储过程的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值