1 """
2 协程,运行的时候轮流去执行各个任务,如果生产者生产的速度比较慢,这里可以使用者个切换出去
3
4 greenlet 会交出执行权,但是如果后面的耗时任务也不会就进入耗时,等下次轮到了,还是要进行耗时
5 这个程序的效果就只能够是轮询,起不到实际的节约时间的效果
6 """
7 import time
8 from datetime import datetime
9 from greenlet import greenlet
10
11
12 def task1():
13 for i in range(5):
14 print(datetime.now(), ": task1---" + str(i))
15 g2.switch()
16 time.sleep(2)
17
18
19 def task2():
20 for i in range(5):
21 print(datetime.now(), ": task2---" + str(i))
22 g3.switch()
23 time.sleep(2)
24
25
26 def task3():
27 for i in range(5):
28 print(datetime.now(), ": task3---" + str(i))
29 g1.switch()
30 time.sleep(2) # 代表耗时任务
31
32
33 if __name__ == '__main__':
34 g1 = greenlet(task1)
35 g2 = greenlet(task2)
36 g3 = greenlet(task3)
37 g1.switch()
38 print("over")
1 """
2 协程,运行的时候轮流去执行各个任务,如果生产者生产的速度比较慢,这里可以使用者个切换出去
3
4 yield 会交出执行权,但是如果后面的耗时任务也不会就进入耗时,等下次轮到了,还是要进行耗时
5 这个程序的效果就只能够是轮询,起不到实际的节约时间的效果
6 """
7 import time
8 from datetime import datetime
9
10
11 def task1():
12 for i in range(5):
13 print(datetime.now(), ": task1---" + str(i))
14 yield
15 time.sleep(2)
16
17 def task2():
18 for i in range(5):
19 print(datetime.now(), ": task2---" + str(i))
20 yield
21 time.sleep(2)
22
23 def task3():
24 for i in range(5):
25 print(datetime.now(), ": task3---" + str(i))
26 yield
27 time.sleep(2) # 代表耗时任务
28
29
30
31 if __name__ == '__main__':
32 g1 = task1()
33 g2 = task2()
34 g3 = task3()
35 while True:
36 try:
37 next(g1)
38 next(g2)
39 next(g3)
40 except:
41 break
42 print("over")