python多程序之程序池

2021-09-10 16:49:08 字數 920 閱讀 1528

在利用python進行系統管理的時候,特別是同時操作多個檔案目錄,或者遠端控制多台主機,並行操作可以節約大量的時間。當被操作物件數目不大時,可以直接利用multiprocessing中的process動態成生多個程序,十幾個還好,但如果是上百個,上千個目標,手動的去限制程序數量卻又太過繁瑣,此時可以發揮程序池的功效。

pool可以提供指定數量的程序供使用者呼叫,當有新的請求提交到pool中時,如果池還沒有滿,那麼就會建立乙個新的程序用來執行該請求;但如果池中的程序數已經達到規定最大值,那麼該請求就會等待,直到池中有程序結束,才會建立新的程序來它。

# -*- coding:utf-8 -*-

from multiprocessing import pool

import os, time, random

def worker(msg):

t_start = time.time()

print("%s開始執行,程序號為%d" % (msg,os.getpid()))

# random.random()隨機生成0~1之間的浮點數

time.sleep(random.random()*2)

t_stop = time.time()

print(msg,"執行完畢,耗時%0.2f" % (t_stop-t_start))

po = pool(3) # 定義乙個程序池,最大程序數3

for i in range(0,10):

# 每次迴圈將會用空閒出來的子程序去呼叫目標

print("----start----")

po.close() # 關閉程序池,關閉後po不再接收新的請求

po.join() # 等待po中所有子程序執行完成,必須放在close語句之後

print("-----end-----")

python 多程序 高階 程序池

如果需要啟動大量的子程序,使用程序池批量建立子程序的方式更加常見,因為當被操作對物件數目不大時,可以直接利用multiprocessing中的process動態生成多個程序,如果數量大,此時就應該使用pool。pool 可以提供指定數量的程序供使用者呼叫,預設大小是cpu的核數。當有新的請求提交到p...

Python多程序 程序池pool

from multiprocessing import process,pool import time defselect time.sleep 1 print time.ctime return 這是每個進行執行完後返回的值,該值會會被 callback函式接收 def foo args pri...

Python 多程序與程序池

fork方法是呼叫一次,返回兩次,原因在於作業系統將當前程序 父程序 複製出乙份程序 子程序 這兩個程序幾乎完全相同,於是fork方法分別在父程序和子程序中返回。子程序中永遠返回0,父程序中返回的是子程序的id。importos if name main print current process ...