亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python如何控制進(jìn)程或者線程的個數(shù)

 更新時間:2020年10月16日 11:17:24   作者:項(xiàng)昂之的  
這篇文章主要介紹了python如何控制進(jìn)程或者線程的個數(shù),幫助大家更好的理解和使用python,感興趣的朋友可以了解下

背景

日常開發(fā)中,難免遇到并發(fā)場景,而并發(fā)場景難免需要做流量控制,即需要對并發(fā)的進(jìn)程或者線程的總量進(jìn)行控制。 今天簡單總結(jié)兩種常用的控制線程個數(shù)的方法。

方法一:進(jìn)程池/線程池

如下例demo所示, 創(chuàng)建了一個大小是4的進(jìn)程池,然后創(chuàng)建5個進(jìn)程,并啟動

from multiprocessing import Pool
import os, time, random


def long_time_task(name):
  print('Run task %s (%s)...' % (name, os.getpid()))
  start = time.time()
  time.sleep(random.random() * 3)
  end = time.time()
  print('Task %s runs %0.2f seconds.' % (name, (end - start)))


if __name__ == '__main__':
  print('Parent process %s.' % os.getpid())
  p = Pool(4)
  for i in range(5):
    p.apply_async(long_time_task, args=(i,))
  print('Waiting for all subprocesses done...')
  p.close()
  p.join()
  print('All subprocesses done.')

運(yùn)行結(jié)果如下,可以看到第5個進(jìn)程會等池子里的進(jìn)程完成一個后才會被啟動

Run task 0 (32952)...
Run task 1 (32951)...
Run task 2 (32953)...
Run task 3 (32954)...
Task 2 runs 0.68 seconds.
Run task 4 (32953)...
Task 1 runs 1.41 seconds.
Task 0 runs 1.44 seconds.
Task 4 runs 2.15 seconds.
Task 3 runs 2.98 seconds.
All subprocesses done.

方法二:queue

queue 模塊即隊(duì)列,特別適合處理信息在多個線程間安全交換的多線程程序中。 下面的demo展示了如何通過queue來限制線程的并發(fā)個數(shù)

import threading
import queue
import time
import random
import os

maxThreads = 4


class Store(threading.Thread):
  def __init__(self, q):
    threading.Thread.__init__(self)
    self.queue = q
    # self.store = store

  def run(self):
    try:
      print('Run task (%s)...' % (os.getpid()))
      start = time.time()
      time.sleep(random.random() * 3)
      end = time.time()
      t = threading.currentThread()
      # 線程ID
      print('Thread id : %d' % t.ident)
      print('Thread name : %s' % t.getName())
      print('Task runs %0.2f seconds.' % (end - start))
    except Exception as e:
      print(e)
    finally:
      self.queue.get()
      self.queue.task_done()


def main():
  q = queue.Queue(maxThreads)
  for s in range(6):
    q.put(s)
    t = Store(q)
    t.start()
  q.join()
  print('over')


if __name__ == '__main__':
  main()

運(yùn)行結(jié)果如下:

Run task (33259)...
Run task (33259)...
Run task (33259)...
Run task (33259)...
Thread id : 123145444999168
Thread name : Thread-13
Task runs 0.04 seconds.
Run task (33259)...
Thread id : 123145394630656
Thread name : Thread-10
Task runs 1.02 seconds.
Run task (33259)...
Thread id : 123145428209664
Thread name : Thread-12
Task runs 1.20 seconds.
Thread id : 123145394630656
Thread name : Thread-17
Task runs 0.68 seconds.
Thread id : 123145444999168
Thread name : Thread-14
Task runs 1.79 seconds.
Thread id : 123145411420160
Thread name : Thread-11
Task runs 2.96 seconds.
over

以上就是python如何控制進(jìn)程或者線程的個數(shù)的詳細(xì)內(nèi)容,更多關(guān)于python 控制進(jìn)程或線程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)的解析crontab配置文件代碼

    python實(shí)現(xiàn)的解析crontab配置文件代碼

    這篇文章主要介紹了python實(shí)現(xiàn)的解析crontab配置文件代碼,也可以說是python版的crontab,代碼中包含大量注釋,需要的朋友可以參考下
    2014-06-06
  • python 實(shí)現(xiàn)端口掃描工具

    python 實(shí)現(xiàn)端口掃描工具

    這篇文章主要介紹了python 實(shí)現(xiàn)端口掃描工具的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python中l(wèi)ist循環(huán)語句用法實(shí)例

    python中l(wèi)ist循環(huán)語句用法實(shí)例

    這篇文章主要介紹了python中l(wèi)ist循環(huán)語句用法,以實(shí)例形式詳細(xì)介紹了Python針對list的解析,包含各種常見的遍歷操作及原理分析,需要的朋友可以參考下
    2014-11-11
  • 淺談對python中if、elif、else的誤解

    淺談對python中if、elif、else的誤解

    這篇文章主要介紹了淺談對python中if、elif、else的誤解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python3中數(shù)組逆序輸出方法

    python3中數(shù)組逆序輸出方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python3中數(shù)組逆序輸出方法內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • 使用pytorch加載并讀取COCO數(shù)據(jù)集的詳細(xì)操作

    使用pytorch加載并讀取COCO數(shù)據(jù)集的詳細(xì)操作

    這篇文章主要介紹了使用pytorch加載并讀取COCO數(shù)據(jù)集,基礎(chǔ)知識包括元祖、字典、數(shù)組,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • PyCharm配置KBEngine快速處理代碼提示沖突、配置命令問題

    PyCharm配置KBEngine快速處理代碼提示沖突、配置命令問題

    這篇文章主要介紹了PyCharm配置KBEngine,解決代碼提示沖突、配置命令,本文通過圖文并茂的形式給大家介紹的超詳細(xì),需要的朋友可以參考下
    2021-04-04
  • python自帶的http模塊詳解

    python自帶的http模塊詳解

    本文主要是給大家詳細(xì)講解了Python中自帶的http模塊的使用方法和實(shí)例,非常的細(xì)致,有需要的小伙伴可以參考下
    2016-11-11
  • python中urlparse模塊介紹與使用示例

    python中urlparse模塊介紹與使用示例

    這篇文章主要給大家介紹了關(guān)于python中urlparse模塊介紹與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Python中的元組介紹

    Python中的元組介紹

    今天小編就為大家分享一篇關(guān)于Python中的元組介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論