同步和異步執行

併發的核心思想在於,大的任務能夠分解成一系列的子任務,後者能夠被調度成同時執行或者異步執行,而不是一次一個地或者同步地執行。兩個子任務之間的切換也就是上下文的切換。
併發

在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

相關文章
相關標籤/搜索