python中的程序

2021-09-01 21:00:46 字數 2331 閱讀 3352

乙個程式執行起來後,**+用到的資源 稱之為程序,它是作業系統分配資源的基本單元。

乙個程序中至少有乙個執行緒。

1、多程序之間不會修改全域性變數,多程序之間共享資源用 訊息佇列(先進先出,後進後出):queue。

2、結論:每個子程序在執行前都會複製乙份主程序**,

多程序之間特別占用資源。

建立程序

(1)、匯入multiprocessing包----->import multiprocessing

(2)、建立程序物件---->p1 = multiprocessing.process(target=子程序名/函式名,arges=(實參,),kwargs=)

(3)、建立程序-----> p1.start()

queue

(1)、建立queue----->q1 = multiprocessing.queue()

(2)寫入到queue----->q1.put()

(3)獲取queue------>q1.get

(4)、判斷queue是否為空------>q1.empty()

(5)、判斷queue是否為滿------->q1.full()

3、多程序之間共享資示例源**:

import multiprocessing

"""結論:每個子程序在執行前都會複製乙份主程序**

通過queue完成了多個程序之間的資料共享,解耦的過程。

"""def download_msg(q):

#模擬資料

gl_num = [11, 22, 33]

for i in gl_num:

q.put(i)

print("資料已存放到佇列中")

def get_msg(q):

wait_data = list()

#從佇列中獲取資料

while true:

if q.empty():

break

print("獲取queue中的資訊為:%s"%wait_data)

def main():

#建立乙個佇列

q = multiprocessing.queue()

# 建立程序物件

p1 = multiprocessing.process(target=download_msg,args=(q,))

p2 = multiprocessing.process(target=get_msg,args=(q,))

#建立程序

p1.start()

p2.start()

if __name__ == '__main__':

main()

4、程序池(pool)

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

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

pool示例源**:

from multiprocessing import pool

import time

import os

import 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,"執行完畢時長%.2f"%(t_stop-t_start))

#定義乙個程序池,最大程序數是3

po = pool(3)

for i in range(0,10):

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

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

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

po.join() #等待po所有的子程序結束完成,必須放在close後面

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

python中的程序 Python中程序

程式 程式 編寫完的 稱為程式。程序程序 又稱重量級程序,正在執行中的程式稱為程序。程序的執行會占用記憶體等資源。多個程序同時執行時,每個程序的執行都需要由作業系統按一定的演算法 rr排程 優先數排程演算法等 分配記憶體空間。並行與併發 並行 在多核系統中,每個cpu執行乙個程序,可以理解為cpu的...

Python中的程序

import os import time from multiprocessing import process nums 1,2,3 def wroker1 子程序要執行的 print 程序1中的記憶體位址 s id nums print in process1 pip d,nums s os....

Python中的程序

多程序是真正的並行 python中的gil,多執行緒不是cpu密集型程式的好的選擇 多程序可以繞過gil 多程序可以完全獨立的程序環境中執行程式,可以充分利用多處理器 process類遵循了thread類的api.常用的程序執行緒方法大致相同 所以windows下建立子程序要放入 name main...