python 程序 python程序

2021-10-13 14:15:03 字數 1889 閱讀 4059

python程序池pool

當需要建立的子程序數量不多時,可以直接利用multiprocessing中的process動態生成多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的pool方法。

初始化pool是,可以指定乙個最大程序數,當有新的請求提交到pool中是,如果吃還沒有滿,那麼就會建立乙個新的程序來執行該請求。但如果池中的程序數已經達到指定的最大值,那麼該請求就會等待,直到池中有程序結束,才會用之前的程序來執行新的任務。

import multiprocessing

import time

import os

import random

def test1(msg):

t_start = time.time()

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

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

t_stop = time.time()

print("%s執行完成,耗時%.2f" % (msg, t_stop - t_start))

if __name__ == "__main__":

po = multiprocessing.pool(3)

for i in range(0, 10):

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

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

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

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

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

multiprocessing.pool常用函式解析:

close():關閉pool,使其不再接受新的任務;

terminate():不管任務是否完成,立即終止;

join():主程序阻塞,等待子程序的退出, 必須在close或terminate之後使用;

python程序池中的queue

如果要使用pool建立程序,就需要使用multiprocessing.manager()中的queue(),而不是multiprocessing.queue(),否則會得到一條如下的錯誤資訊:

runtimeerror:queue objects should only be shared between processes through inheritance.

下面的例項演示了程序池中的程序如何通訊:

import os

import multiprocessing

import time

def write(q):

print("write啟動(%s),父程序為(%s)" % (os.getpid(), os.getppid()))

for i in "python":

q.put(i)

def read(q):

print("read啟動(%s),父程序為(%s)" % (os.getpid(), os.getppid()))

for i in range(q.qsize()):

print("read從queue獲取到訊息:%s" % q.get(true))

if __name__ == "__main__":

print("(%s) start" % os.getpid())

q = multiprocessing.manager().queue()

po = multiprocessing.pool()

time.sleep(2)

po.close()

po.join()

print("(%s) end" % os.getpid())

python子程序 Python實戰之子程序

最近做乙個小工具需要用到python的字程序,看了一下python的api,subprocess模組可以就可以實現,並且還挺簡單 要實現乙個簡單的自程序,只需要 import sys,os,subprocess p subprocess.popen ls l shell false,stdin no...

python程序和執行緒 Python中的程序和執行緒

程序和執行緒 我們開啟我們的計算機就會看到程序和執行緒 那什麼是程序什麼是執行緒 我的理解是程序是指在系統中正在執行的乙個應用程式 程式一旦執行就是程序,或者更專業化來說 程序是指程式執行時的乙個例項。執行緒是程序的乙個實體。程序 資源分配的最小單位,執行緒 程式執行的最小單位。我舉個例子,比如開啟...

Python併發程式設計之程序(殭屍程序 孤兒程序)

前言 本博文是對python併發程式設計之程序的知識延伸,主要講解 殭屍程序 孤兒程序。python多程序中的multiprocessing python多程序中的fork python併發程式設計之程序 守護程序 鎖 訊號量 四 知識擴充套件 在前面的博文裡,我們介紹到 正常情況下,子程序是通過父...