日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python多線程異步任務隊列

系統 1941 0

?

?

原文地址

python的多線程異步常用到queue和threading模塊

            
              #
            
            
              !/usr/bin/env python
            
            
              
#
            
            
               -*- coding: UTF-8 -*-
            
            
              import
            
            
               logging

            
            
              import
            
            
               queue

            
            
              import
            
            
               threading
   

            
            
              def
            
            
               func_a(a, b):
    
            
            
              return
            
             a +
            
               b
   

            
            
              def
            
            
               func_b():
    
            
            
              pass
            
            
              def
            
            
               func_c(a, b, c):
    
            
            
              return
            
            
               a, b, c
   

            
            
              #
            
            
               異步任務隊列
            
            
_task_queue =
            
               queue.Queue()
   

            
            
              def
            
             async_call(function, callback, *args, **
            
              kwargs):
    _task_queue.put({
        
            
            
              '
            
            
              function
            
            
              '
            
            
              : function,
        
            
            
              '
            
            
              callback
            
            
              '
            
            
              : callback,
        
            
            
              '
            
            
              args
            
            
              '
            
            
              : args,
        
            
            
              '
            
            
              kwargs
            
            
              '
            
            
              : kwargs
    })
   

            
            
              def
            
            
               _task_queue_consumer():
    
            
            
              """
            
            
              
    異步任務隊列消費者
    
            
            
              """
            
            
              while
            
            
               True:
        
            
            
              try
            
            
              :
            task 
            
            =
            
               _task_queue.get()
            function 
            
            = task.get(
            
              '
            
            
              function
            
            
              '
            
            
              )
            callback 
            
            = task.get(
            
              '
            
            
              callback
            
            
              '
            
            
              )
            args 
            
            = task.get(
            
              '
            
            
              args
            
            
              '
            
            
              )
            kwargs 
            
            = task.get(
            
              '
            
            
              kwargs
            
            
              '
            
            
              )
            
            
            
              try
            
            
              :
                
            
            
              if
            
            
               callback:
                    callback(function(
            
            *args, **
            
              kwargs))
            
            
            
              except
            
            
               Exception as ex:
                
            
            
              if
            
            
               callback:
                    callback(ex)
            
            
            
              finally
            
            
              :
                _task_queue.task_done()
        
            
            
              except
            
            
               Exception as ex:
            logging.warning(ex)
   

            
            
              def
            
            
               handle_result(result):
    
            
            
              print
            
            
              (type(result), result)
   

            
            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :
    t 
            
            = threading.Thread(target=
            
              _task_queue_consumer)
    t.daemon 
            
            =
            
               True
    t.start()
   
    async_call(func_a, handle_result, 
            
            1, 2
            
              )
    async_call(func_b, handle_result)
    async_call(func_c, handle_result, 
            
            1, 2, 3
            
              )
    async_call(func_c, handle_result, 
            
            1, 2, 3, 4
            
              )
   
    _task_queue.join()
            
          

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 西华县| 阜南县| 泽普县| 台北市| 宁化县| 博野县| 金阳县| 广西| 宁陵县| 栖霞市| 饶河县| 巍山| 天等县| 赤壁市| 涟源市| 金山区| 奉新县| 富阳市| 南漳县| 三台县| 霍山县| 涟水县| 开远市| 攀枝花市| 中江县| 札达县| 宜城市| 津南区| 桑植县| 阳山县| 灵璧县| 洪湖市| 四川省| 海城市| 宣汉县| 阳城县| 汾西县| 宁明县| 淮阳县| 江阴市| 铜梁县|