Python 開啟執行緒和程序的兩種方式

2021-10-17 15:12:23 字數 2266 閱讀 8429

開銷

在發生開啟程序給作業系統時,作業系統需要申請記憶體空間給子程序,拷貝父程序位址空間到子程序,而開啟執行緒不需要這些步驟,因此開啟程序開銷遠大於執行緒,開啟速度為執行緒快

位址空間

程序之間位址空間是隔離的,開多個程序,每個程序都有不同的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不支援 後者...