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

Python多線程異步任務隊列

系統 1991 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條評論
主站蜘蛛池模板: 兖州市| 台湾省| 石景山区| 樟树市| 临江市| 沙雅县| 双柏县| 称多县| 顺义区| 扎鲁特旗| 涟源市| 隆安县| 华宁县| 沂源县| 神农架林区| 宜宾市| 阳江市| 江永县| 武山县| 沂水县| 若羌县| 池州市| 和田县| 驻马店市| 清徐县| 谢通门县| 扬中市| 长沙县| 济阳县| 昭觉县| 蓝山县| 锦屏县| 贵溪市| 汝南县| 资中县| 会同县| 吴忠市| 阳新县| 迁西县| 大田县| 凯里市|