同步和异步执行

并发的核心思想在于,大的任务能够分解成一系列的子任务,后者能够被调度成同时执行或者异步执行,而不是一次一个地或者同步地执行。两个子任务之间的切换也就是上下文的切换。
并发

在gevent里面,上下文切换是经过yielding来完成的,在下面的例子里,咱们有两个上下文,经过调用gevent.sleep(0),他们各自yield向对方。异步

import gevent
spa

def foo():ci

    print ("Running in foo")同步

    gevent.sleep(0)it

    print("Implicit context switch back to foo again")event


def bar():import

    print ("Explicit context to bar")yield

    gevent.sleep(0)im

    print("Implicit context switch back to bar")

gevent.joinall([ 

    gevent.spawn(foo),

    gevent.spawn(bar),

])


运行结果:

Running in foo

Explicit context to bar

Explicit context switch to foo again

Implicit context switch back to bar

相关文章
相关标签/搜索