python執行緒isalive python執行緒

2021-10-11 12:29:13 字數 2399 閱讀 8345

python3和python2的執行緒有一定的區別

python2用的是thread

python3用的是_thread

因為python3thread方法很簡單,很多東西很難實現。_thread的方法在threading中都有

所以我做的總結主要是基於threading的

執行緒模組

python3 通過兩個標準庫 _thread 和 threading 提供對執行緒的支援。

_thread 提供了低階別的、原始的執行緒以及乙個簡單的鎖,它相比於 threading 模組的功能還是比較有限的。

threading 模組除了包含 _thread 模組中的所有方法外,還提供的其他方法:threading.currentthread(): 返回當前的執行緒變數。

threading.enumerate(): 返回乙個包含正在執行的執行緒的list。正在執行指執行緒啟動後、結束前,不包括啟動前和終止後的執行緒。

threading.activecount(): 返回正在執行的執行緒數量,與len(threading.enumerate())有相同的結果。

除了使用方法外,執行緒模組同樣提供了thread類來處理執行緒,thread類提供了以下方法:run(): 用以表示執行緒活動的方法。

start():啟動執行緒活動。

join([time]): 等待至執行緒中止。這阻塞呼叫執行緒直至執行緒的join() 方法被呼叫中止-正常退出或者丟擲未處理的異常-或者是可選的超時發生。

isalive(): 返回執行緒是否活動的。

getname(): 返回執行緒名。

setname(): 設定執行緒名。

使用threading模組創造執行緒

我們可以通過直接從 threading.thread 繼承建立乙個新的子類,並例項化後呼叫 start() 方法啟動新執行緒,即它呼叫了執行緒的 run() 方法:

import threading

import time

class mythread (threading.thread):

def __init__(self, threadid, name, counter):

threading.thread.__init__(self)

self.threadid = threadid

self.name = name

self.counter = counter

def run(self):

print ("開始執行緒:" + self.name)

print_time(self.name, self.counter, 5)

print ("退出執行緒:" + self.name)

def print_time(threadname, delay, counter):

while counter:

if exitflag:

threadname.exit()

time.sleep(delay)

print ("%s: %s" % (threadname, time.ctime(time.time())))

counter -= 1

thread1 = mythread(1, "thread-1", 1)

thread2 = mythread(2, "thread-2", 2)

thread1.start()

thread2.start()

thread1.join()

thread2.join()

print ("退出主線程")

這個程式 我寫的時候遇到了一些問題

1. threading.thread到底是什麼

2.joi()到底有啥用

也可以繼承threading.thread重寫run()方法

class threading.thread(group=none, target=none, name=none, args=(), kwargs={}, *, daemon=none)

這個建構函式通常會用一些關鍵字引數,下面我們了解下這些關鍵字:

group :這個變數作為保留變數,是為了以後擴充套件用的,暫時可以不用考慮。

target: 是通過run()方法呼叫的可呼叫物件。預設為無,這意味著什麼都不做。

name:執行緒的名字。預設情況下,乙個唯一的名稱是」thread-n」,的形式,其中n是乙個小的十進位制數。

args:元組引數,為target所呼叫的。

kwargs:關鍵字引數的字典,為target所呼叫的。

daemon: 設定daemon是否daemon 如果沒有顯示設定,daemon的屬性時從當前執行緒繼承。

如果子類重寫此建構函式,它必須確保在做別的事情之前呼叫基類的建構函式(thread.__init__())。

join()使得執行緒結束後再進行下面的操作,如果去掉 上訴的程式將直接會先列印出線程結束

java多執行緒 isAlive方法的有趣現象

多執行緒中的isalive方法相信大家都知道。無非就是當前執行緒如果是存活的,在執行中,則返回true,否則返回false,不過還是有些有趣現象的,我們這裡用 演示一下 class testthread extends thread public class alivetest 上面 結果 fals...

python多執行緒 python多執行緒

通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...

python執行緒陣列 python多執行緒

例項一 coding utf 8 匯入threading模組,在thread上有優化 importthreadingfrom time importctimeimporttime count 0deftest func globalcount time.sleep 1 測試鎖 if lock.acq...