最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用python實現(xiàn)的線程池實例代碼

 更新時間:2018年01月06日 16:35:45   作者:Orisun  
這篇文章主要介紹了用python實現(xiàn)的線程池實例代碼,具有一定借鑒價值,需要的朋友可以參考下

python3標(biāo)準(zhǔn)庫里自帶線程池ThreadPoolExecutor和進程池ProcessPoolExecutor。

如果你用的是python2,那可以下載一個模塊,叫threadpool,這是線程池。對于進程池可以使用python自帶的multiprocessing.Pool。

當(dāng)然也可以自己寫一個threadpool。

# coding:utf-8
 
import Queue
import threading
import sys
import time
import math
 
 
class WorkThread(threading.Thread):
 
  def __init__(self, task_queue):
    threading.Thread.__init__(self)
    self.setDaemon(True)
    self.task_queue = task_queue
    self.start()
    self.idle = True
 
  def run(self):
    sleep_time = 0.01 # 第1次無任務(wù)可做時休息10毫秒
    multiply = 0
    while True:
      try:
        # 從隊列中取一個任務(wù)
        func, args, kwargs = self.task_queue.get(block=False)
        self.idle = False
        multiply = 0
        # 執(zhí)行之
        func(*args, **kwargs)
      except Queue.Empty:
        time.sleep(sleep_time * math.pow(2, multiply))
        self.idle = True
        multiply += 1
        continue
      except:
        print sys.exc_info()
        raise
 
 
class ThreadPool:
 
  def __init__(self, thread_num=10, max_queue_len=1000):
    self.max_queue_len = max_queue_len
    self.task_queue = Queue.Queue(max_queue_len) # 任務(wù)等待隊列
    self.threads = []
    self.__create_pool(thread_num)
 
  def __create_pool(self, thread_num):
    for i in xrange(thread_num):
      thread = WorkThread(self.task_queue)
      self.threads.append(thread)
 
  def add_task(self, func, *args, **kwargs):
    '''添加一個任務(wù),返回任務(wù)等待隊列的長度
      調(diào)用該方法前最后先調(diào)用isSafe()判斷一下等待的任務(wù)是不是很多,以防止提交的任務(wù)被拒絕
    '''
    try:
      self.task_queue.put((func, args, kwargs))
    except Queue.Full:
      raise # 隊列已滿時直接拋出異常,不給執(zhí)行
    return self.task_queue.qsize()
 
  def isSafe(self):
    '''等待的任務(wù)數(shù)量離警界線還比較遠(yuǎn)
    '''
    return self.task_queue.qsize() < 0.9 * self.max_queue_len
 
  def wait_for_complete(self):
    '''等待提交到線程池的所有任務(wù)都執(zhí)行完畢
    '''
    #首先任務(wù)等待隊列要變成空
    while not self.task_queue.empty():
      time.sleep(1)
    # 其次,所以計算線程要變成idle狀態(tài)
    while True:
      all_idle = True
      for th in self.threads:
        if not th.idle:
          all_idle = False
          break
      if all_idle:
        break
      else:
        time.sleep(1)
 
 
if __name__ == '__main__':
  def foo(a, b):
    print a + b
    time.sleep(0.01)
  thread_pool = ThreadPool(10, 100)
  '''在Windows上測試不通過,Windows上Queue.Queue不是線程安全的'''
  size = 0
  for i in xrange(10000):
    try:
      size = thread_pool.add_task(foo, i, 2 * i)
    except Queue.Full:
      print 'queue full, queue size is ', size
  time.sleep(2)

總結(jié)

以上就是本文關(guān)于用python實現(xiàn)的線程池實例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Pytorch上下采樣函數(shù)--interpolate用法

    Pytorch上下采樣函數(shù)--interpolate用法

    這篇文章主要介紹了Pytorch上下采樣函數(shù)--interpolate用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python中批量文件處理與自動化管理技巧分享

    Python中批量文件處理與自動化管理技巧分享

    在日常辦公或數(shù)據(jù)處理工作中,我們經(jīng)常需要處理大量的文件,本文主要介紹了如何使用Python進行文件操作,目錄管理等常見任務(wù),希望對大家有所幫助
    2025-02-02
  • python實現(xiàn)多層感知器MLP(基于雙月數(shù)據(jù)集)

    python實現(xiàn)多層感知器MLP(基于雙月數(shù)據(jù)集)

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)多層感知器MLP,基于雙月數(shù)據(jù)集,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 在Python運行時動態(tài)查看進程內(nèi)部信息的方法

    在Python運行時動態(tài)查看進程內(nèi)部信息的方法

    今天小編就為大家分享一篇在Python運行時動態(tài)查看進程內(nèi)部信息的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python利用os模塊實現(xiàn)自動刪除磁盤文件

    Python利用os模塊實現(xiàn)自動刪除磁盤文件

    你們一定想不到os模塊還可以這樣玩,本文就將利用Python中的os模塊實現(xiàn)自動刪除磁盤文件功能,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下
    2022-11-11
  • Python利用contextvars實現(xiàn)管理上下文變量

    Python利用contextvars實現(xiàn)管理上下文變量

    Python?在?3.7?的時候引入了一個模塊:contextvars,從名字上很容易看出它指的是上下文變量。所以本文就來和大家詳細(xì)講講如何使用contextvars實現(xiàn)管理上下文變量,需要的可以參考一下
    2022-07-07
  • python中pandas.read_csv()函數(shù)的深入講解

    python中pandas.read_csv()函數(shù)的深入講解

    這篇文章主要給大家介紹了關(guān)于python中pandas.read_csv()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python密碼學(xué)庫pynacl功能介紹

    python密碼學(xué)庫pynacl功能介紹

    PyNaCI能夠提供數(shù)字簽名、密鑰加密、公鑰加密、哈希和消息身份驗證、基于密碼的密鑰派生和密碼散列功能,這篇文章主要介紹了python密碼學(xué)庫pynacl,感興趣的朋友一起看看吧
    2022-05-05
  • python實現(xiàn)列表中由數(shù)值查到索引的方法

    python實現(xiàn)列表中由數(shù)值查到索引的方法

    今天小編就為大家分享一篇python實現(xiàn)列表中由數(shù)值查到索引的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Django admin model 漢化顯示文字的實現(xiàn)方法

    Django admin model 漢化顯示文字的實現(xiàn)方法

    今天小編就為大家分享一篇Django admin model 漢化顯示文字的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

津南区| 巨野县| 阿坝| 邵阳市| 东宁县| 新巴尔虎左旗| 汉阴县| 赣州市| 威信县| 电白县| 三明市| 平武县| 潞西市| 景泰县| 榆林市| 民权县| 杂多县| 大悟县| 南涧| 井冈山市| 平遥县| 大英县| 房山区| 团风县| 镇远县| 利川市| 万州区| 贺州市| 乃东县| 仪征市| 青神县| 托克逊县| 湘潭市| 九龙县| 伊吾县| 土默特右旗| 绥滨县| 含山县| 崇仁县| 沾化县| 桐柏县|