python多執行緒的機制與使用

2021-09-17 22:58:46 字數 2453 閱讀 8263

程序是程式的分配資源的最小單元;乙個程式可以有多個程序,但只有乙個主程序;程序由程式、資料集、控制器三部分組成。

執行緒是程式最小的執行單元;乙個程序可以有多個執行緒,但是只有乙個主線程;執行緒切換分為兩種:一種是i/o切換,一種是時間切換(i/o切換:一旦執行i/o任務時便進行執行緒切換,cpu開始執行其他執行緒;時間切換:一旦到了一定時間,執行緒也進行切換,cpu開始執行其他執行緒)。

乙個程式至少有乙個程序和乙個執行緒;

程式的工作方式:

1.單程序單執行緒;2.單程序多執行緒;3.多程序多執行緒;

考慮到實現的複雜性,一般最多隻會採用單程序多執行緒的工作方式;

我們在實際生活中,希望既能一邊瀏覽網頁,一邊聽歌,一邊打遊戲。這時,如果只開乙個程序,為了滿足需求,cpu只能快速切換程序,但是在切換程序時會造成大量資源浪費。所以,如果是多核cpu,可以在同時執行多個程序而不用進行程序之間的切換。

然而,在實際中,比如:你在玩遊戲的時候,電腦需要一邊顯示遊戲的動態,一邊你還得和同伴進行語音或語言進行溝通。這時,如果是單執行緒的工作方式,將會造成在操作遊戲的時候就無法給同伴溝通,在和同伴溝通的時候就無法操作遊戲。為了解決該問題,我們可以開啟多執行緒來共享遊戲資源,同時進行遊戲操作和溝通。

併發:在乙個時間段,處理多個任務,單核也可以併發(cpu分時間片);

並行:在同乙個時刻,處理多個任務,必須多核才能並行;

python實現併發的手段:1、作業系統提供:程序、執行緒;2、程式語言提供:協程:使用者空間的排程(py3);題外話:現在的作業系統,程序和執行緒的區別越來越小,因為程序越來越輕了;實際上,linux的執行緒是通過程序實現的;

'''多執行緒的引入需要匯入包'''

import threading

import time

# 定義乙個person類,有兩個方法敲**和抽菸

class

person

(object):

def__init__

(self, name)

: self.name = name

deftype_codes

(self)

:for i in

range(5

):print

('%s在敲**'

%self.name)

time.sleep(

0.01

)def

smoke

(self)

:for i in

range(5

):print

('%s在抽菸'

%self.name)

time.sleep(

0.01

)# 執行緒的執行是無序的

if __name__ ==

'__main__'

: xiaoming = person(

'小明'

) coding_thread = threading.thread(target=xiaoming.type_codes)

#建立執行緒

smoking_thread = threading.thread(target=xiaoming.smoke)

print

(threading.active_count())

# 活動執行緒的個數

smoking_thread.setdaemon(

true

)# 設定成主線程結束則銷毀,守護執行緒

coding_thread.setdaemon(

true

)# 有幾個執行緒都要守護

coding_thread.start(

)#開始執行緒

smoking_thread.start(

)print

(threading.

enumerate()

)# 函式顯示的是活動的執行緒數

print

('主線程結束'

) exit(

)

import threading

class

mythread

(threading.thread)

:def

__init__

(self, num)

:super

(mythread, self)

.__init__(

)# 一定要呼叫父類初始化

# threading.thread.__init__(self) # 這種方法也可以

self.num = num

defrun(self)

:# 這裡自定義執行緒執行時的函式

print

('此時呼叫'

)if __name__ ==

'__main__'

: thread = mythread(1)

thread.start(

)

Python多執行緒機制

今天要跟大家一起來學習一下python的多執行緒機制。有兩個原因,其一是自己在學習中經常會使用到多執行緒,其二當然是自己對python中的多執行緒並不是很了解。那麼,今天和大家一起了解下 python多執行緒機制 開發多執行緒的應用系統,是在日常開發中經常會遇到的需求。同時,python也為多執行緒...

python多執行緒鎖機制

在多執行緒程式設計中常用到的乙個概念就是鎖,它用於將執行緒需要獨佔的資源進行加鎖,使用後再進行釋放,防止死鎖發生。此處給出乙個不加鎖的多執行緒例子 實現整數n在每個執行緒內加1並列印 usr bin python coding utf 8 import threading import time c...

MFC下多執行緒與訊息機制的結合使用

這裡我用vc 6.0建立了乙個名為muti tread的對話方塊程式。在muti threaddlg.h header file 中新增 generated message map functions afx msg declare message map 在muti threaddlg.cpp i...