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

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

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

背景

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

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

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

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個(gè)進(jìn)程會等池子里的進(jìn)程完成一個(gè)后才會被啟動(dòng)

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ì)列,特別適合處理信息在多個(gè)線程間安全交換的多線程程序中。 下面的demo展示了如何通過queue來限制線程的并發(fā)個(gè)數(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)程或者線程的個(gè)數(shù)的詳細(xì)內(nèi)容,更多關(guān)于python 控制進(jìn)程或線程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?Concurrent?Futures解鎖并行化編程的魔法示例

    Python?Concurrent?Futures解鎖并行化編程的魔法示例

    Python的concurrent.futures模塊為并行化編程提供了強(qiáng)大的工具,使得開發(fā)者能夠輕松地利用多核心和異步執(zhí)行的能力,本文將深入探討concurrent.futures的各個(gè)方面,從基礎(chǔ)概念到高級用法,為讀者提供全面的了解和實(shí)用的示例代碼
    2023-12-12
  • python 多線程將大文件分開下載后在合并的實(shí)例

    python 多線程將大文件分開下載后在合并的實(shí)例

    今天小編就為大家分享一篇python 多線程將大文件分開下載后在合并的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python筆記之a(chǎn) = [0]*x格式的含義及說明

    Python筆記之a(chǎn) = [0]*x格式的含義及說明

    這篇文章主要介紹了Python筆記之a(chǎn) = [0]*x格式的含義及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 使用python生成云詞圖實(shí)現(xiàn)畫紅樓夢詞云圖

    使用python生成云詞圖實(shí)現(xiàn)畫紅樓夢詞云圖

    紅樓夢相信大家都看過,今天給大家介紹另一種不用搞得烏漆麻黑的方式來制作紅樓夢的詞云圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • 詳解Python中enumerate函數(shù)的使用

    詳解Python中enumerate函數(shù)的使用

    Python?的?enumerate()?函數(shù)就像是一個(gè)神秘的黑箱,它具有非常有用的高級用法。本文就來為大家詳細(xì)講一下它的使用,需要的可以參考一下
    2022-08-08
  • Pandas之排序函數(shù)sort_values()的實(shí)現(xiàn)

    Pandas之排序函數(shù)sort_values()的實(shí)現(xiàn)

    這篇文章主要介紹了Pandas之排序函數(shù)sort_values()的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python內(nèi)置函數(shù)zip map filter的使用詳解

    Python內(nèi)置函數(shù)zip map filter的使用詳解

    這篇文章主要介紹了Python內(nèi)置函數(shù)zip map filter的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • YOLOv5車牌識別實(shí)戰(zhàn)教程(二)理論基礎(chǔ)

    YOLOv5車牌識別實(shí)戰(zhàn)教程(二)理論基礎(chǔ)

    這篇文章主要介紹了YOLOv5車牌識別實(shí)戰(zhàn)教程(二)理論基礎(chǔ),在這個(gè)教程中,我們將一步步教你如何使用YOLOv5進(jìn)行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下
    2023-04-04
  • Python網(wǎng)絡(luò)爬蟲中的同步與異步示例詳解

    Python網(wǎng)絡(luò)爬蟲中的同步與異步示例詳解

    這篇文章主要給大家介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲中同步與異步的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • Python OpenCV圖像的位運(yùn)算操作

    Python OpenCV圖像的位運(yùn)算操作

    位運(yùn)算是計(jì)算機(jī)科學(xué)中一種基礎(chǔ)而高效的操作,它直接對二進(jìn)制位進(jìn)行處理,在圖像處理中,位運(yùn)算也是一種重要的技術(shù),尤其在圖像的合成、分離、掩模處理等場景中,常常用到位運(yùn)算,本文將介紹圖像處理中的常見位運(yùn)算操作,需要的朋友可以參考下
    2024-12-12

最新評論

滦南县| 灵璧县| 湖南省| 兴和县| 墨江| 丁青县| 大冶市| 扬州市| 巴中市| 砚山县| 新源县| 宁强县| 和龙市| 安乡县| 昭苏县| 达日县| 博白县| 申扎县| 彩票| 镶黄旗| 安新县| 平塘县| 辽中县| 荆门市| 瑞金市| 布拖县| 右玉县| 丰顺县| 肥城市| 平顺县| 邳州市| 格尔木市| 湖州市| 修水县| 成都市| 井陉县| 吴桥县| 米泉市| 福贡县| 黔西县| 湄潭县|