• python 协程


     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")
  • 相关阅读:
    WPF入门(一):简单的演示
    代码的演化DI(理解依赖注入di,控制反转ioc)
    WPF入门(三):简单绑定 绑定到页面元素
    WPF入门(四):简单绑定 静态资源绑定
    WPF入门(六)样式Style
    WPF入门(八)布局(layout) port 2
    js select onchange
    js this指向
    js 两个日期之间有多少个星期几
    js table的所有td 按行合并
  • 原文地址:https://www.cnblogs.com/cfpl/p/12996557.html
Copyright © 2020-2023  润新知