Python中線程的使用(停止操作)

2021-09-22 17:57:28 字數 1537 閱讀 3195

#!/usr/bin/env python

# coding: utf-8

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時阻塞直到self.__flag為true後返回

print (time.strftime("%y-%m-%d %h:%m:%s", time.localtime()))

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

a = job()

a.start()

time.sleep(3)

a.pause()

time.sleep(3)

a.resume()

# time.sleep(2)

# a.stop()

對於thread方法的基本使用

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的屬性時從當前執行緒繼承。

Python中線程的使用(停止操作)

對通過threading模組建立新python的thread模組是比較底層的模組,python的threading模組是對thread做了一些封裝,可以更加方便的被使用。模組並沒有提供暫停,恢復和停止執行緒的方法,一旦執行緒物件呼叫start方法後,只能等到對應的方法函式執行完畢.也就是說一旦sta...

Python中線程的使用

併發 多個任務同一時間段進行 並行 多個任務同一時刻進行 執行緒的實現 執行緒模組 python通過兩個標準庫 thread 和threading,提供對執行緒的支援 threading對 thread進行了封裝 因此在實際的使用中我們一般都是使用threading threading模組中提供了t...

Java 中線程的停止方法

首先不要使用 thread.stop 方法,該方法會強制執行緒立即停止執行,不安全,造成不可預知的錯誤。如下面 所示 thread thread new thread 在執行耗時操作之前,thread.interrupted 並且會清除當前執行緒的中斷狀態 置為false if interrupte...