python多線程控制


利用wait的阻塞機制, 就能夠實現暫停和恢復了, 再配合循環判斷標識位, 就能實現退出了

#!/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時阻塞直到內部的標識位為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

  測試代碼

a = Job()
a.start()
time.sleep(3)
a.pause()
time.sleep(3)
a.resume()
time.sleep(3)
a.pause()
time.sleep(2)
a.stop()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM