在使用多執行緒的過程中,我們知道,python的執行緒是沒有stop/terminate方法的,也就是說它被啟動後,你無法再主動去退出它,除非主程序退出了,注意,是主程序,不是執行緒的父程序.
乙個比較合理的方式就是把原因需要放到threading.thread的target中的執行緒函式,改寫到乙個繼承類中,下面是乙個實現例子
import threading
import time
import os
# 原本需要用來啟動的無線迴圈的函式
def print_thread():
pid = os.getpid()
counts = 0
while true:
print(f'threading pid: ran: s')
counts += 1
time.sleep(1)
# 把函式放到改寫到類的run方法中,便可以通過呼叫類方法,實現執行緒的終止
class stoppablethread(threading.thread):
def __init__(self, daemon=none):
super(stoppablethread, self).__init__(daemon=daemon)
self.__is_running = true
self.daemon = daemon
def terminate(self):
self.__is_running = false
def run(self):
pid = os.getpid()
counts = 0
while self.__is_running:
print(f'threading running: ran: s')
counts += 1
time.sleep(1)
def call_thread():
thread = stoppablethread()
thread.daemon = true
thread.start()
pid = os.getpid()
counts = 0
for i in range(5):
print(f'0 call threading pid: ran: s')
counts += 2
time.sleep(2)
# 主動把執行緒退出
thread.terminate()
if __name__ == '__main__':
call_thread()
print(f'**********call_thread finish**********=')
counts = 0
for i in range(5):
counts += 1
time.sleep(1)
print(f'main thread: s')
多執行緒 執行緒的停止
thread類中stop方法停止執行緒存在安全隱患,怎麼讓乙個執行緒停止執行呢?執行緒的執行一般都是迴圈控制體,通過改變run方法 迴圈控制條件,即可讓執行緒停止。class threadstopdemo system.out.println thread.currentthread getname...
多執行緒退出
多執行緒退出,有兩種安全的退出方法。呼叫waitforsingleobject。必須在同乙個執行緒,否則會造成阻塞。例子如下 m pthreadrec afxbeginthread thread tcpserverreceive,this uint thread tcpserverreceive l...
多執行緒 執行緒的停止 執行緒的延遲
執行緒的停止 最好是用標誌位的轉換來停止執行緒 例 三個模組 執行緒 執行緒停止方法 主方法 主方法執行到一定條件 呼叫 執行緒停止方法 執行緒停止執行 主方法繼續執行 package lesson thread public class thread stop implements runnabl...