标签:异常 自动 dia port 第三方模块 end code 结果 res
协程,又称微线程,即为轻量级的线程。g = greenlet(run=None, parent=None):实例化一个greenlet对象
g.parent:每一个协程都有一个父协程,当前协程结束后会回到父协程中执行,该属性默认是创建该协程的协程
g.run: 该属性是协程实际运行的代码. run方法结束了,那么该协程也就结束了
g.switch(*args, **kwargs): 切换到g协程
g.throw(): 切换到g协程,接着抛出一个异常
from greenlet import greenlet
def work():
print("1")
g2.switch() # 切换到g2协程
print("3")
g2.switch()
def work2():
print("2")
g1.switch()
print("4")
g1 = greenlet(work) # 创建一个greenlet实例
g2 = greenlet(work2)
g1.switch() # 切换到g1协程
1
2
3
4
from gevent import monkey
monkey.patch_all() # monkey补丁会将在它之后导入的模块的IO操作打包,使gevent认识他们
import gevent
def work1():
print("1")
gevent.sleep(1)
print("3")
def work2():
print("2")
gevent.sleep(1)
print("4")
g1 = gevent.spawn(work1)
g2 = gevent.spawn(work2)
# g1.join()
# g2.join()
gevent.joinall([g1,g2])
from gevent import monkey;monkey.patch_all()
import gevent
import requests
def get_url(url):
res = requests.get(url)
print(url,res.status_code,len(res.text))
url_l = [
‘http://www.baidu.com‘,
‘http://www.google.com‘,
‘https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5‘,
‘https://www.youtube.com/?app=desktop‘,
‘https://www.facebook.com/‘,
‘http://www.python.org‘,
‘http://www.cnblogs.com‘
]
g_l = []
for i in url_l:
g_l.append(gevent.spawn(get_url,i))
gevent.joinall(g_l)
标签:异常 自动 dia port 第三方模块 end code 结果 res
原文地址:http://blog.51cto.com/jiayimeng/2351137