zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    谈谈对程序猿的管理
    OFMessageDecoder 分析
    [LeetCode-21]Construct Binary Tree from Preorder and Inorder Traversal
    leetcode第一刷_Rotate Image
    [二次开发]dede文章页面怎样显示作者的头像
    MapReduceTopK TreeMap
    安卓3d引擎
    LeetCode::Sort List 具体分析
    杨帆之工作日志-2014.6.24
    CF1109F Sasha and Algorithm of Silence's Sounds
  • 原文地址:https://www.cnblogs.com/cfpl/p/12996557.html
Copyright © 2011-2022 走看看