Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet,它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。
import time
from gevent import monkey;monkey.patch_all()
import gevent
def eat(name):
print('%s eat 1' % name)
time.sleep(3)
print('%s eat 2' % name)
def play(name):
print('%s play 1' % name)
time.sleep(4)
print('%s play 2' % name)
start_time = time.time()
g1 = gevent.spawn(eat, 'winnie')
g2 = gevent.spawn(play, 'allen')
g1.join()
g2.join()
stop_time = time.time()
print(stop_time - start_time)
结果:
winnie eat 1
allen play 1
winnie eat 2
allen play 2
4.026681184768677
import time
from gevent import monkey;
monkey.patch_all()
import gevent
def eat(name):
print('%s eat 1' % name)
time.sleep(3)
print('%s eat 2' % name)
def play(name):
print('%s play 1' % name)
time.sleep(4)
print('%s play 2' % name)
start_time = time.time()
g1 = gevent.spawn(eat, 'winnie')
g2 = gevent.spawn(play, 'allen')
# g1.join()
# g2.join()
gevent.joinall([g1, g2])
stop_time = time.time()
print(stop_time - start_time)