Python3 协程之greenlet

博客介绍了greenlet协程相关内容。运行结果为1 3 2 ,switch表示协程的切换,创建greenlet时会初始化空栈,switch到栈时运行构造传入函数,函数中switch到其他协程会挂起。还介绍了switch()带参数的用法,如切换协程并传递参数等。

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

from greenlet import greenlet
def test1():
    print (1)
    gr2.switch()
    print (2)

def test2():
    print (3)
    gr1.switch()
    print (4)

gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()

运行结果为1  3  2

switch表示协程的切换

当创建一个greenlet时,首先初始化一个空的栈, switch到这个栈的时候,会运行在greenlet构造时传入的函数,如果在这个函数中switch到其他协程,那么该协程会被挂起,等到切换回来

 

switch()带参数的用法:

import greenlet
def test1(x, y):
    z = gr2.switch(x+y)
    print('test1 ', z)

def test2(u):
    print('test2 ', u)
    gr1.switch(10)

gr1 = greenlet.greenlet(test1)
gr2 = greenlet.greenlet(test2)
gr1.switch("hello", " world")

首先切换到gr1,运行函数test1。"hello"传给x,"word"传给y,下一步z = gr2.switch("hello world")。运行函数test2,"hello world "传递给u,接着屏幕会打印出“hello world”。然后切换到gr1,10传递给z。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值