執行緒和程序

2021-09-29 09:52:00 字數 1610 閱讀 7183

執行緒和程序的區別:

python中通過threading模組實現多執行緒,threading中相關方法如下:

實現**如下:

# 建立多執行緒任務

deffun

(name, t)

: time.sleep(t)

print

('i am %s'

% name)

if __name__ ==

'__main__'

:#建立兩線程來執行任務函式

t1 = threading.thread(target=fun, name=

'hello1'

, args=

('henry',5

))t2 = threading.thread(target=fun, name=

'hello2'

, args=

('henry2',3

))print

('任務開始'

)#t1.setdaemon(true) #設定守護執行緒

#t2.setdaemon(true)

t1.start(

)#啟動執行緒

t2.start(

) t1.join(

)#阻塞程式直到子執行緒執行完

t2.join(

)print

('任務完成'

)

python中通過multiprocessing模組來實現多程序,相關的方法和多執行緒類似:

**如下:

from multiprocessing import process

# 獲取當前系統的最大核數

# print(multiprocessing.cpu_count())

# 獲取當前程序的pid

# print(os.getpid())

defrun_proc

(name)

: time.sleep(2)

print

('正在執行子程序 %s (%s)...'

%(name, os.getpid())

)if __name__==

'__main__'

:print

('父程序號 %s.'

% os.getpid())

p1 = process(target=run_proc, args=

('p1',)

) p2 = process(target=run_proc, args=

('p2',)

)print

('子程序開始執行'

) p1.start(

) p2.start(

) p1.join(

) p2.join(

)print

('子程序執行完成'

)

總結:

在python由於gil鎖的存在,所以對於i/o密集的程式,一般使用多執行緒機制,因為在遇到i/o耗時操作會自動釋放gil鎖;而對於cpu密集的程式,可以使用多程序機制來規避gil鎖的影響,從而提高執行效率.

執行緒和程序

標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...

程序和執行緒

乙個程序就是當前正在執行的乙個程式,包括程式的暫存器 程式計數器和變數的當前值。不同的程序擁有不同的位址空間。而執行緒可以理解為是程序中的控制流。同乙個程序內也就是說在同乙個位址空間內可以有多個控制流。也就是可以有多個線 程,他們共享位址空間。我們通常將程序視為是資源的集合,程序中有程式的正文 資料...

執行緒和程序

對於求職者,在面試的時候大多都會被問到 你對多執行緒了解麼?給我講講執行緒和程序的區別吧。在unix中,乙個程序可以理解為執行緒 位址空間 檔案描述符 資料,道破現實,其實就相當於老闆和員工,老闆就是程序,員工就是執行緒。老闆需要僱傭若干員工 執行緒 還要有辦公樓 位址空間 還要有若干的辦公裝置 檔...