最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Python多線程異步任務(wù)隊(duì)列

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:28:22
文檔

Python多線程異步任務(wù)隊(duì)列

Python多線程異步任務(wù)隊(duì)列:很多場景為了不阻塞,都需要異步回調(diào)機(jī)制。這是一個(gè)簡單的例子。python的多線程異步常用到queue和threading模塊#!/usr/bin/env python # -*- coding: UTF-8 -*- import logging import queue import threading def fu
推薦度:
導(dǎo)讀Python多線程異步任務(wù)隊(duì)列:很多場景為了不阻塞,都需要異步回調(diào)機(jī)制。這是一個(gè)簡單的例子。python的多線程異步常用到queue和threading模塊#!/usr/bin/env python # -*- coding: UTF-8 -*- import logging import queue import threading def fu

很多場景為了不阻塞,都需要異步回調(diào)機(jī)制。這是一個(gè)簡單的例子。

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
 
# 異步任務(wù)隊(duì)列
_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():
 """
 異步任務(wù)隊(duì)列消費(fèi)者
 """
 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()

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Python多線程異步任務(wù)隊(duì)列

Python多線程異步任務(wù)隊(duì)列:很多場景為了不阻塞,都需要異步回調(diào)機(jī)制。這是一個(gè)簡單的例子。python的多線程異步常用到queue和threading模塊#!/usr/bin/env python # -*- coding: UTF-8 -*- import logging import queue import threading def fu
推薦度:
標(biāo)簽: 任務(wù) python 隊(duì)列
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top