一、誰的開啟速度快?
1,在主程序下開啟子程序
import開程序p.start () 將開啟程序的訊號發給作業系統後,作業系統要申請記憶體空間,好讓父程序位址空間拷貝到子程序,開銷遠大於執行緒。time
from multiprocessing import
process
defsay_hi(name):
print('
%s say hi!
' %name)
time.sleep(2)
print('
%s say hello!
' %name)
if__name__ == '
__main__':
p = process(target=say_hi,args=('
zixi
',))
p.start()
print('
主線程'
)"""
主線程zixi say hi!
zixi say hello!
"""
2,在主程序下開啟執行緒
import開執行緒幾乎是 t.start () 的同時就將執行緒開啟了,然後先列印出了zixi say hi!,證明執行緒的建立開銷極小。time
from threading import
thread
defsay_hi(name):
print('
%s say hi!
' %name)
time.sleep(2)
print('
%s say hello!
' %name)
if__name__ == '
__main__':
t = thread(target=say_hi,args=('
zixi
',))
t.start()
print('
主線程'
)"""
zixi say hi!
主線程zixi say hello!
"""
二、同一程序內的多個執行緒共享該程序的資料
1,程序之間的位址空間是隔離的
from multiprocessing import毫無疑問子程序 p 已經將自己的全域性的 n 改成了0,但改的僅僅是它自己的,檢視父程序的 n 仍然為100。process
n = 100
deftask():
global
n n =0
if__name__ == '
__main__':
p = process(target=task,)
p.start()
p.join()
print('
主線程'
,n)#
主線程 100
2,同一程序內開啟的多個執行緒是共享該程序位址空間的
from threading import檢視結果為 0,因為同一程序內的執行緒之間共享程序內的資料。thread
n = 100
deftask():
global
n n =0
if__name__ == '
__main__':
t = thread(target=task,)
t.start()
t.join()
print('
主線程'
,n)#
主線程 0
三、看一下 pid
1,開多個程序,每個程序都有不同的 pid
from multiprocessing import2,在主程序下開啟多個執行緒,每個執行緒都跟主程序的 pid 一樣process
import
osdef
task():
print("
子程序pid:%s 父程序pid:%s
" %(os.getpid(),os.getppid()))
if__name__ == '
__main__':
p1 = process(target=task,)
p2 = process(target=task,)
p1.start()
p2.start()
print('
主線程'
,os.getpid())
"""主線程 11256
子程序pid:1416 父程序pid:11256
子程序pid:18872 父程序pid:11256
"""
from threading importthread
import
osdef
task():
print("
執行緒pid:%s
" %(os.getpid()))
if__name__ == '
__main__':
t1 = thread(target=task,)
t2 = thread(target=task,)
t1.start()
t2.start()
print('
主線程'
,os.getpid())
"""執行緒pid:10288
執行緒pid:10288
主線程 10288
"""
多程序與多執行緒的區別
據說這個問題很重要,要從多個方面總結。多執行緒和多程序的區別 小結 多執行緒還是多程序的選擇及區別 關於程序和執行緒對於全域性變數共享的問題學習總結 程序是資源分配的最小單位,執行緒是cpu排程的最小單位。同一程序的不同執行緒會共享程序記憶體空間中的全域性區和堆。執行緒私有的是棧和暫存器。因此。區域...
多程序與多執行緒的區別
多程序與多執行緒的區別?解 1 從資料共享 同步方面來講,多程序資料共享複雜,需要用ipc,資料是分開的,同步簡單 多執行緒資料共享簡單,但也是因為這個原因導致同步複雜。2 從內 存 cpu 方面來講,多程序占用記憶體多,切換複雜,cpu利用率低 多執行緒占用記憶體少,切換簡單,cpu利用率高。3 ...
多執行緒與多程序的區別
維度 多程序多執行緒 總結資料共享 同步 資料是分開的,共享複雜,需要用ipc 同步簡單 多執行緒共享程序資料,共享簡單 同步複雜 各有優勢 記憶體 cpu 占用記憶體多,切換複雜,cpu利用率低 占用記憶體少,切換簡單,cpu利用率高 執行緒佔優 建立銷毀 切換 建立銷毀 切換複雜,速度慢 建立銷...