Python 多程序程式設計

2022-06-02 18:03:11 字數 2556 閱讀 6110

import

multiprocessing

import

time

import

osimport

random

g_nums = [11, 22, 33]

deftest1():

while

true:

print("

子程序pid = %d,父程序pid = %d

" %(os.getpid(), os.getppid()))

time.sleep(1)

def test2(a, b, c, *args, **kwargs):

print

(a)

print

(b)

print

(c)

print

(args)

print

(kwargs)

deftest3():

global

g_nums

print("

test3:

", end=""

)

print

(g_nums)

deftest4():

global

g_nums

print("

test4:

", end=""

)

print

(g_nums)

defdownload_from_web(q):

""""""

# data = [11, 22, 33, 44]

#向佇列中寫入資料

for temp in

data:

q.put(temp)

print("")

defanalysis_data(q):

"""資料處理

"""wait_analysis_data =list()

while

true:

data =q.get()

ifq.empty():

break

print("

模擬資料處理:

" +str(wait_analysis_data))

defwork(msg):

t_start =time.time()

print("

%d開始執行,程序pid:%d

" %(msg, os.getppid()))

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

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

t_stop =time.time()

print("

%d執行完畢,耗時%0.2f

" % (msg, t_stop -t_start))

defmain():

print("

主程序pid = %d,父程序pid = %d

" %(os.getpid(), os.getppid()))

#建立乙個佇列

q =multiprocessing.queue()

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

po = multiprocessing.pool(3)

p1 = multiprocessing.process(target=test1)

p2 = multiprocessing.process(target=test2, args=(11, 22, 33, 44, 55, 66, 77), kwargs=)

p3 = multiprocessing.process(target=test3)

p4 = multiprocessing.process(target=test4)

#建立多個程序,將佇列的引用當做實參傳遞到裡面

p5 = multiprocessing.process(target=download_from_web, args=(q,))

p6 = multiprocessing.process(target=analysis_data, args=(q,))

#p1.start()

#p2.start()

## 程序3 和 程序4 說明:多程序之間不共享全域性變數

#p3.start()

#p4.start()

## 程序5 和 程序6 演示了多程序之間通過queue 來實現資料共享

#p5.start()

#p6.start()

for i in range(1, 11):

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

print("

------start------")

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

po.close()

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

po.join()

print("

------end------")

if__name__ == '

__main__':

main()

python多程序 Python多程序程式設計詳解

本文 在 python 3.6 環境下測試通過。多程序 multiprocessing 模組是在 python 2.6 版本中加入的,和多執行緒 threading 模組類似,都是用來做並行運算的。不過python既然有了threading,為什麼還要搞乙個multiprocessing呢?這是因為...

python 多程序程式設計

多程序指的是乙個程式可以啟動多個程序執行,一般模式如下 import multiprocessing from multiprocessing import process,current process import time cup 核數量 num cpus multiprocessing.cp...

python多程序程式設計

python多程序程式設計。最近開始學習python程式語言,詳細參照 python絕技運用python成為頂級黑客 在學習過程第一章節中,編寫破解linux shadow檔案時,想利用多執行緒加快破解速度。主機執行環境為windows下的vm workstation上的一台虛擬機器,執行多執行緒 ...