python-协程学习

#1、使用yield
import time

#并发
def task1():
	while True:
		print("----1----")
		time.sleep(0.5)
		yield


def task2():
	while True:
		print("----2----")
		time.sleep(0.5)
		yield


def main():
	t1 = task1()
	t2 = task2()
	n = 5
	while True and n> 0:
		next(t1)
		next(t2)
		n -= 1


if __name__ == '__main__':
	main()
#2、使用greenlet
from greenlet import greenlet

import time 


def test1():
	n = 5
	while True and n > 0:
		print("----A----")
		n -= 1
		gr2.switch()
		time.sleep(0.5)


def test2():
	n = 4
	while True and n > 0:
		print("----B----")
		n -= 1
		gr1.switch()
		time.sleep(0.5)

gr1 = greenlet(test1)
gr2 = greenlet(test2)

#切换到gr1运行
gr1.switch()
#3、使用gevent
import gevent
import time

def f(n):
	for i in range(n):
		print(gevent.getcurrent(),i)
		gevent.sleep(0.5)


g1 = gevent.spawn(f,5)
g2 = gevent.spawn(f,5)
g3 = gevent.spawn(f,5)
g1.join()
g2.join()
g3.join()

#4、在原先time.sleep()上更新
import gevent 
import time
from gevent import monkey

monkey.patch_all()

def f(n):
	for i in range(n):
		print(gevent.getcurrent(),i)
		time.sleep(0.5)


# g1 = gevent.spawn(f,5)
# g2 = gevent.spawn(f,5)
# g3 = gevent.spawn(f,5)
# g1.join()
# g2.join()
# g3.join()
gevent.joinall([
	gevent.spawn(f,5),
	gevent.spawn(f,5),
	gevent.spawn(f,5)
])

猜你喜欢

转载自www.cnblogs.com/akmfwei/p/13163323.html
今日推荐