python入门
gevent异步 入门教程(入坑)
python • 李魔佛 发表了文章 • 0 个评论 • 3261 次浏览 • 2019-04-18 11:37
code1
import time
import gevent
import requests
def foo():
print('Running in foo')
r=requests.get('http://30daydo.com')
print(r.status_code)
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
r=requests.get('http://www.qq.com') #
print(r.status_code)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
import time
import gevent
import requests
def foo():
print('Running in foo')
time.sleep(2) # 这样子不起作用
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
time.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
import time
import gevent
import requests
def foo():
print('Running in foo')
gevent.sleep(2) # 通过它各自yield向对方
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
gevent.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
使用gevent.sleep()
这个函数才可以达到目的. 查看全部
import time
import gevent
import requests
def foo():
print('Running in foo')
r=requests.get('http://30daydo.com')
print(r.status_code)
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
r=requests.get('http://www.qq.com') #
print(r.status_code)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
import time
import gevent
import requests
def foo():
print('Running in foo')
time.sleep(2) # 这样子不起作用
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
time.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
import time
import gevent
import requests
def foo():
print('Running in foo')
gevent.sleep(2) # 通过它各自yield向对方
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
gevent.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
使用gevent.sleep()
这个函数才可以达到目的. 查看全部
code1
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
使用gevent.sleep()
这个函数才可以达到目的.
import time
import gevent
import requests
def foo():
print('Running in foo')
r=requests.get('http://30daydo.com')
print(r.status_code)
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
r=requests.get('http://www.qq.com') #
print(r.status_code)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
import time
import gevent
import requests
def foo():
print('Running in foo')
time.sleep(2) # 这样子不起作用
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
time.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
import time
import gevent
import requests
def foo():
print('Running in foo')
gevent.sleep(2) # 通过它各自yield向对方
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
gevent.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
使用gevent.sleep()
这个函数才可以达到目的.
gevent异步 入门教程(入坑)
python • 李魔佛 发表了文章 • 0 个评论 • 3261 次浏览 • 2019-04-18 11:37
code1
import time
import gevent
import requests
def foo():
print('Running in foo')
r=requests.get('http://30daydo.com')
print(r.status_code)
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
r=requests.get('http://www.qq.com') #
print(r.status_code)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
import time
import gevent
import requests
def foo():
print('Running in foo')
time.sleep(2) # 这样子不起作用
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
time.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
import time
import gevent
import requests
def foo():
print('Running in foo')
gevent.sleep(2) # 通过它各自yield向对方
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
gevent.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
使用gevent.sleep()
这个函数才可以达到目的. 查看全部
import time
import gevent
import requests
def foo():
print('Running in foo')
r=requests.get('http://30daydo.com')
print(r.status_code)
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
r=requests.get('http://www.qq.com') #
print(r.status_code)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
import time
import gevent
import requests
def foo():
print('Running in foo')
time.sleep(2) # 这样子不起作用
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
time.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
import time
import gevent
import requests
def foo():
print('Running in foo')
gevent.sleep(2) # 通过它各自yield向对方
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
gevent.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
使用gevent.sleep()
这个函数才可以达到目的. 查看全部
code1
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
使用gevent.sleep()
这个函数才可以达到目的.
import time
import gevent
import requests
def foo():
print('Running in foo')
r=requests.get('http://30daydo.com')
print(r.status_code)
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
r=requests.get('http://www.qq.com') #
print(r.status_code)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
上面的异步代码不起作用,因为requests阻塞了,所以用的时间和顺序执行的时间一样.
或者用以下代码替代:
import time
import gevent
import requests
def foo():
print('Running in foo')
time.sleep(2) # 这样子不起作用
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
time.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
把访问网络部分使用sleep替代,那么最后的运行时间是2+2 =4秒,并不是2秒,那么要怎样才是2秒呢,需要改成以下的代码:
import time
import gevent
import requests
def foo():
print('Running in foo')
gevent.sleep(2) # 通过它各自yield向对方
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
gevent.sleep(2)
print('Implicit context switch back to bar')
start=time.time()
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
print('time used {}'.format(time.time()-start))
使用gevent.sleep()
这个函数才可以达到目的.