python3 執行緒的停止

2021-09-03 08:20:02 字數 2056 閱讀 5261

1、threading類

設定子執行緒為守護執行緒,(setdaemon=true),當主線程結束時,守護執行緒會自動結束

import threading

def run(x):

while x:

print(x)

t = threading.thread(target=run,args=(4,), daemon=true)

#t.setdaemon(true)

#t.daemon=true

t.start() # 開始執行緒

# t.join() # join() 表示主線程阻塞,一直等子執行緒執行結束

2、類中直接設定標誌位

import threading

class run():

def __init__(self):

self._flag=false

def run(self,x):

while x:

print(x,self._flag)

if self._flag:

break

def terminate(self):

self._flag = true

if __name__ == '__main__':

fun = run()

t = threading.thread(target=fun.run, args=(5,))

t.start()

p=5while p:

print(threading.activecount())

p=p-1

fun.terminate()

t.join()

2.5、

threading.event()產生乙個event物件。event缺省內置了乙個標誌,初始值為false,

set():將標誌置為true;

clear():則用於清除標誌位(使之為false);

wait(timeout):當event物件的內部訊號標誌為false時。wait方法一直堵塞執行緒等待到其為真或者超時(若提供,浮點數,單位為秒)才返回,若event物件內部標誌為true則wait()方法馬上返回;

isset():用於查詢標誌位是否為true,

import threading

import time

class job(threading.thread):

def __init__(self, *args, **kwargs):

super(job, self).__init__(*args, **kwargs)

self.__flag = threading.event() # 用於暫停執行緒的標識

self.__flag.set() # 設定為true

self.__running = threading.event() # 用於停止執行緒的標識

self.__running.set() # 將running設定為true

def run(self):

while self.__running.isset():

self.__flag.wait() # 為true時立即返回, 為false時阻塞直到內部的標識位為true後返回

print time.time()

time.sleep(1)

def pause(self):

self.__flag.clear() # 設定為false, 讓執行緒阻塞

def resume(self):

self.__flag.set() # 設定為true, 讓執行緒停止阻塞

def stop(self):

self.__flag.set() # 將執行緒從暫停狀態恢復, 如何已經暫停的話

self.__running.clear() # 設定為false

Python3多執行緒

學習python執行緒 python3 執行緒中常用的兩個模組為 thread threading 推薦使用 thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用 thread 模組。為了相容性,python3 將 thread 重新命名為...

python3 執行緒死鎖

所謂死鎖 是指兩個或兩個以上的程序或執行緒在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序,如下就是死鎖 code from threading import thread,lock ...

python3 多執行緒

多執行緒簡介 執行緒 thread 也稱輕量級程序,時作業系統能夠進行運算排程的最小單位,它被包涵在程序之中,時程序中的實際運作單位。執行緒自身不擁有資源,只擁有一些在執行中必不可少的資源,但他可與同屬乙個程序的其他執行緒共享程序所擁有的全部資源。乙個執行緒可以建立和撤銷另乙個執行緒,同一程序中的多...