Python中实现协程的方法

本文介绍Python中协程的基本概念及其实现方式,包括使用yield关键字的手动切换方式和通过gevent模块实现的自动切换方式。

协程:简单的来说就是不带有返回值的调用

最基本的实现方法:

  • 利用yeild来实现

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也可以实现了协程,但是这个还得人工切换,有点很麻烦,就不介绍了
  • python还有一个能够自动切换任务的模块 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])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大、大摩王

你的鼓励是我创装的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值