import time
import multiprocessing
deftest1()
:while
true
:print
("1-----"
) time.sleep(1)
deftest2()
:while
true
:print
("2-----"
) time.sleep(1)
defmain()
:# t1 = threading.thread(target=test1)
# t2 = threading.thread(target=test2)
# t1.start()
# t2.start()
p1 = multiprocessing.process(target=test1)
p2 = multiprocessing.process(target=test2)
p1.start(
) p2.start(
)if __name__ ==
"__main__"
: main(
)
import os
import multiprocessing
deftest()
:print
("子程序的pid = %d : 父程序的pid = %d"
%(os.getpid(
),os.getppid())
)def
main()
:# os.getpid獲取當前程序的程序號
# os.getppid獲取父程序的程序號
# 如果已經是父程序,得到系統程序id,如bash環境執行得到bash的id
print
("主程序的pid = %d : 系統程序的pid = %d"
%(os.getpid(
),os.getppid())
) p = multiprocessing.process(target=test)
p.start(
)if __name__ ==
"__main__"
: main(
)
import multiprocessing
import os
deftest
(a, b, c,
*args,
**kwargs)
:print
(a)print
(b)print
(c)print
(args)
print
(kwargs)
defmain()
:print
("子程序的pid = %d : 父程序的pid = %d"
%(os.getpid(
),os.getppid())
) p = multiprocessing.process(target=test,
args=[11
,22,33
,44,55
,66,77
,88],
kwargs=
) p.start(
)if __name__ ==
"__main__"
: main(
)
import multiprocessing
import time
import os
num =[11
,22,33
]def
test1()
:44)print
("在程序中1中num = %s"
%str
(num)
) time.sleep(1)
deftest2()
:print
("在程序中2中num = %s"
%str
(num)
)def
main()
:print
("主程序的pid = %d : 系統程序的pid = %d"
%(os.getpid(
), os.getppid())
) p1 = multiprocessing.process(target=test1)
p2 = multiprocessing.process(target=test2)
p1.start(
)# join([timeout]):是否等待子程序執行結束,或等待多少秒
p1.join(
) p2.start(
)if __name__ ==
"__main__"
: main(
)
import multiprocessing
defdownload_from_web
(q):
data =[11
,22,33
,44]# 向佇列中寫入資料
for temp in data:
q.put(temp)
print()
defanalysis_data
(q):
"""資料處理"""
waitting_analysis_data =
list()
# 從佇列中獲取資料
while
true
: data = q.get(
)if q.empty():
break
# 模擬資料處理
print
(waitting_analysis_data)
defmain()
:# 1. 建立乙個佇列
q = multiprocessing.queue(
)# 2. 建立多個程序,將佇列的引用當作實參傳遞進去
p1 = multiprocessing.process(target=download_from_web, args=
(q,)
) p2 = multiprocessing.process(target=analysis_data, args=
(q,)
) p1.start(
) p2.start(
)if __name__ ==
"__main__"
: main(
)
from multiprocessing import pool
import os
import time
import random
defworker
(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)
)def
main()
: po = pool(3)
# 定義乙個程序池,最大程序數3
for i in
range(0
,10):
# 每次迴圈將會用空閒出來的子程序去呼叫目標
(i,)
)print
("----start----"
) po.close(
)# 關閉程序池,關閉後po不再接收新的請求
po.join(
)# 等待po中所有子程序執行完成,必須放在close語句之後
print
("-----end-----"
)if __name__ ==
"__main__"
: main(
)
多工 程序 佇列
程式可以理解為乙個 它是靜態的,儲存在硬碟中,不占用資源,程式執行起來,就是程序,程序消耗資源,占用記憶體中,程序也可以完成多工。程序耗費資源較多。建立程序通過 import multiprocessing p1 multiprocessing.process target p1.start 來建立...
python 多工 程序
什麼是程序?程式是靜態的,當程式執行起來就叫做程序。程序是作業系統分配資源的基本單元。程序 執行緒的區別與優缺點 1.定義的不同 程序是系統進行資源分配的最小單位.執行緒是程序的乙個實體,是cpu進行排程的基本單位。執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源 如程式計數器,一組...
多工原理,執行緒,程序
一.現代作業系統 windows,mac os x,linux,unix等 都支援 多工 二.單任務現象 from time import sleep defrun while true print sunck is a nice man sleep 1.2 if name main while t...