天天看點

gevent.joinall()開啟協程

  • 這是我寫的兩個有關的部落格,建議如果覺得下面的代碼比較費解,可以先看下面的文章

    Python并發Gevent庫(一)

    AttributeError: module ‘select’ has no attribute ‘error’解決方法

相比于 AttributeError: module ‘select’ has no attribute ‘error’解決方法 這篇文章,這裡我加了一句

print("End of File")

這樣之後輸出就是成了下面這樣子

GET: https://www.python.org/

GET: https://www.yahoo.com/

GET: https://github.com/

51558 bytes received from https://github.com/.

48866 bytes received from https://www.python.org/.

507204 bytes received from https://www.yahoo.com/.

End of File

可以看出: 在文章末尾,調用完所有的join的協程之後,才會到下面的過程。也就是平時所說的,

阻塞

住了~

from gevent import monkey

monkey.patch_all(select=False)
import requests
import gevent


def f(url):
    print('GET: %s' % url)
    data = requests.get(url).text
    print('%d bytes received from %s.' % (len(data), url))


gevent.joinall([
    gevent.spawn(f, 'https://www.python.org/'),
    gevent.spawn(f, 'https://www.yahoo.com/'),
    gevent.spawn(f, 'https://github.com/'),
])
print("End of File")