Python 多執行緒的退出 停止的一種是實現思路

2021-09-26 14:36:00 字數 1489 閱讀 7739

在使用多執行緒的過程中,我們知道,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...