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。