#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)
])