#!/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...