importmultiprocessing
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):
(a)
(b)
(c)
(args)
(kwargs)
deftest3():
global
g_nums
print("
test3:
", end=""
)
(g_nums)
deftest4():
global
g_nums
print("
test4:
", end=""
)
(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上的一台虛擬機器,執行多執行緒 ...