開銷
在發生開啟程序給作業系統時,作業系統需要申請記憶體空間給子程序,拷貝父程序位址空間到子程序,而開啟執行緒不需要這些步驟,因此開啟程序開銷遠大於執行緒,開啟速度為執行緒快
位址空間
程序之間位址空間是隔離的,開多個程序,每個程序都有不同的pid,但子程序的資料是來自於拷貝父程序的資料,程序之間存在父子程序概念。
乙個程序預設分配乙個執行緒,同一程序內開啟的多個執行緒是共享該程序位址空間的,執行緒之間的關係平等,不存在什麼父子關係。
自己寫乙個類並且繼承process類
import time
from multiprocessing import process
class
myprocess
(process)
:def
__init__
(self, data, name=
none):
super()
.__init__(
) self.data = data
if name:
self.name = name
defrun(self)
->
none
:print
(f" 準備"
) time.sleep(1)
print
(f" "
)if __name__ ==
'__main__'
:for i in
range(1
,4):
p = myprocess(
"多喝熱水"
, f"程序-"
) p.start(
)
將函式作為引數例項化process類
import time
from multiprocessing import process, current_process
deffunx
(data)
:print
(f" 準備"
) time.sleep(1)
print
(f" "
)if __name__ ==
'__main__'
:for i in
range(1
,4):
p = process(target=funx, args=
("在遛狗",)
, name=f"程序-"
) p.start(
)
自己寫乙個類並且繼承thread類
import time
from threading import thread
class
mythread
(thread)
:# 繼承thread這個類
def__init__
(self, data, name=
none,)
:super()
.__init__(
) self.data = data
if name:
self.name = name
defrun(self)
->
none
:print
(f"執行緒: 準備"
) time.sleep(1)
print
(f"執行緒: "
)for i in
range(1
,5):
t = mythread(
"在賣包子"
, name=f"執行緒-"
) t.start(
)
將函式作為引數例項化thread類
import time
from threading import thread, currentthread
deffunx
(data)
:print
(f" 準備"
) time.sleep(1)
print
(f" "
)for i in
range(1
,4):
t = thread(target=funx, args=
("在遛狗",)
, name=f"執行緒-"
) t.start(
)
Python 執行緒和程序
一 什麼是執行緒 1 執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。每個程序至少包含乙個執行緒.二 什麼是程序 1 乙個程序就是乙個程式的例項,每個程序裡面...
python執行緒和程序
執行緒 計算機能夠進行排程的最小單位 乙個程序可以包含多個執行緒,執行緒共享程序資源 多執行緒併發 上下文程序就像乙個工作的房間 記憶體 以及房間裡工作需要的資源 i o啊,網絡卡啊 執行緒相當於工作的人 所有的在同乙個程序中的執行緒是共享一塊記憶體空間 pid 唯一的程序識別符號 each pro...
python程序和執行緒
爬蟲開發過程中 程序和執行緒的概念是非常重要的 提高爬蟲的 工作效率 打造分布式爬蟲 都離不開程序和執行緒的身影 多程序 多執行緒 協程 分布式程序等四個方面 使用os模組中的fork方法 使用multiprocessing模組 前者僅僅適用unix linux作業系統 對windows不支援 後者...