python threading 結束線程

python threading 啟動的線程,并沒有提供終止線程的方法,現總結一下在網上找到的方法

1、通過threading.Thread._Thread__stop()結束線程

import time
import threading
def f():while 1:time.sleep(0.1)print(1)t = threading.Thread(target=f)
t.start()
time.sleep(0.5)
print("Stopping the thread")
threading.Thread._Thread__stop(t)
print("Stopped the thread")# 運行結果python2
1
1
1
1
Stopping the thread
Stopped the thread# 運行結果 python31
1
1
1
Traceback (most recent call last):File "C:/work/1/reco/12月/tmp.py", line 64, in <module>threading.Thread._Thread__stop(t)
AttributeError: type object 'Thread' has no attribute '_Thread__stop'
Stopping the thread

Windows實驗結果:python2時,p.isAlive()會報False,但實際進程并未結束。用python3會報錯。

2、使用ctypes強行殺掉線程

import threading
import time
import inspect
import ctypesdef _async_raise(tid, exctype):"""raises the exception, performs cleanup if needed"""tid = ctypes.c_long(tid)if not inspect.isclass(exctype):exctype = type(exctype)res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))if res == 0:raise ValueError("invalid thread id")elif res != 1:# """if it returns a number greater than one, you're in trouble,# and you should call it again with exc=NULL to revert the effect"""ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)raise SystemError("PyThreadState_SetAsyncExc failed")def stop_thread(thread):_async_raise(thread.ident, SystemExit)def print_time(e):while 2:print(e)if __name__ == "__main__":t = threading.Thread(target=print_time,args=("2"))t.start()time.sleep(0.001)stop_thread(t)print("stoped")time.sleep(2)t1 = threading.Thread(target=print_time,args=("1"))t1.start()time.sleep(0.001)stop_thread(t1)print("stoped")while 1:pass

windows實測:python2 可以結束進程,python3未測。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454669.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

快讀模板

快速讀入字符 inline char readc(){ static char buf[1 << 18], *fs, *ft;return (fs ft && (ft (fs buf) fread(buf, 1, 1 << 18, stdin)), fs ft) ? EOF : *fs; } 快速讀入數字 inline int readint(){register char creadc();register int res0;re…

fasttext 文本分類_4種常見的NLP實踐思路【特征提取+分類模型】

越來越多的人選擇參加算法賽事&#xff0c;為了提升項目實踐能力&#xff0c;同時也希望能拿到好的成績增加履歷的豐富度。期望如此美好&#xff0c;現實卻是&#xff1a;看完賽題&#xff0c;一點思路都木有。那么&#xff0c;當我們拿到一個算法賽題后&#xff0c;如何破題&a…

Angular4學習筆記(六)- Input和Output

概述 Angular中的輸入輸出是通過注解Input和Output來標識&#xff0c;它位于組件控制器的屬性上方。 輸入輸出針對的對象是父子組件。 演示 Input 新建項目connInComponents:ng new connInComponents.新增組件stock:ng g component stock.在stock.component.ts中新增屬性stockN…

Python 常見加密方式和實現

Python 加密與解密小結 這篇文章主要介紹了Python 加密與解密,使用base64或pycrypto模塊 前言 據記載&#xff0c;公元前400年&#xff0c;古希臘人發明了置換密碼。1881年世界上的第一個電話保密專利出現。在第二次世界大戰期間&#xff0c;德國軍方啟用“恩尼格瑪”密碼機…

jenkins日志亂碼linux,Jenkins控制臺中亂碼問題解決

由于服務器環境及應用層各版本的不同、編碼方式的不同因此會有很多種情況會出現亂碼問題。由于Jenkins中的job運行的是獨立的一個shell環境&#xff0c;許多的環境變量與服務器中是不一樣的&#xff0c;因此在job中執行的命令也就會有所差異。因此可以在job中執行env命令&#…

13,反轉鏈表《劍指offer》

題目&#xff1a; 輸入一個鏈表&#xff0c;反轉鏈表后&#xff0c;輸出鏈表的所有元素。 思路&#xff1a; 反轉鏈表&#xff0c;對于片段 1--->2--->3循環操作&#xff1b; 要反轉鏈表需要兩步&#xff1a; 一&#xff0c;將2->next指向1 &#xff08;如果不保存3那…

什么是面試的關鍵?資深HR告訴你!

求職指南、面試寶典、應聘手冊……到任何一個書店去轉轉&#xff0c;總能發現一兩本這樣的書&#xff0c;有關面試應聘的包裝技巧實在太多&#xff0c;既讓應聘者眼花繚亂、無所適從&#xff0c;也讓人事經理頭疼&#xff0c;總擔心會被應聘者的包裝所蒙騙。東方控股集團有限公…

windows商店_Windows記事本應用現在可以從Microsoft Store中獲得

早在2019年8月&#xff0c;微軟就宣布將把人們最常用的Windows記事本應用搬到應用商店&#xff0c;讓這款深受用戶喜愛的應用更新速度更快、響應更靈敏。12月晚些時候&#xff0c;微軟卻放棄了這一計劃&#xff0c;也沒有給出太多理由。但現在&#xff0c;這一計劃已經完成&…

.net core linux 編譯,.NET Core 源碼編譯的問題解析

引言&#xff1a; .NET Core 源碼編譯https://github.com/dotnetgit clone https://github.com/dotnet/runtime.git一&#xff1a;Windows 編譯VS 2019 16.6(不要安裝預覽版)Win 10 專業版&#xff0c;最新版本 (1903/2004)長路徑支持&#xff1a;組策略(gpedit.msc) > 計算…

jmeter 壓測duobbo接口,施壓客戶端自己把自己壓死了

jmeter 壓測duobbo接口&#xff0c;jmeter代碼不合理&#xff0c;導致每執行一次請求&#xff0c;會調用一次消耗內存的實例化。導致越壓越慢&#xff0c;請求發不出去。這個時候需要考慮修改代碼了。 截圖中&#xff0c;tps越來越少。 原來初始化的代碼放在 runTest中執行。修…

oracle pl/sql 包

包用于在邏輯上組合過程和函數&#xff0c;它由包規范和包體兩部分組成。1)、我們可以使用create package命令來創建包&#xff0c;如&#xff1a;i、創建一個包sp_packageii、聲明該包有一個過程update_saliii、聲明該包有一個函數annual_income --聲明該包有一個存儲過程和一…

MySQL 之 explain

explain 介紹 explain顯示了MySQL如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優化的查詢語句。簡單講&#xff0c;它的作用就是分析查詢性能。explain 查詢SQL - 用于顯示SQL執行信息參數&#xff0c;根據參考信息可以進行SQL優化 示例&#x…

[置頂]微軟面試智力題

這個笑話反映了兩個公司不同的企業文化。很多人都知道微軟的企業文化是寬松和自由&#xff0c;給員工一個充分發揮創造力的空間&#xff0c;這也是微軟能吸引很多人才的原因之一。但是&#xff0c;要想進微軟工作可不容易&#xff0c;微軟在招聘工作上一點也不馬虎&#xff0c;…

背單詞軟件 單詞風暴 分享id_周一考研高效背單詞系列(一):利用單詞軟件如何背好單詞...

高效背單詞考研單詞作為考研路上的第一大難關&#xff0c;相信很多小伙伴都在這上面吃過不少苦&#xff0c;有同學更是看到密密麻麻的大綱詞匯就頭疼&#xff0c;但只要是學習就是有方法的&#xff0c;今天&#xff0c;我們開始推出高效背單詞系列——墨墨背單詞。另&#xff1…

linux c++ 編譯 庫,LINUX C/C++ 編譯庫關系

在LINUX 下安裝個啥,都要涉及到編譯,尤其是開源軟件. 那么編譯就涉及到C/C 和對應的庫. 我們理一理之間的關系有助于MYSQL8源碼編譯libc glibc libc libstdc eglibc GCC G CMakeGDB從libc說起。libc是Linux下原來的標準C庫&#xff0c;也就是當初寫hello world時包含的頭文件#…

Linux_學習_Day3_bash

Shell bash是外部程序&#xff1a;type/whichis bash。 shell&#xff0c; 子shell。可以利用bash打開另一個bash。即打開一個子shell。并且每個進程是獨立存在的。對于子shell而言&#xff0c;bash并不認知其他bash的存在。 執行了多次bash&#xff0c;要退出只需exit。用pst…

mysql 之 優化 (收集于網絡)

&#xff08;以下內容均來自于網絡&#xff0c;如果有版權限制&#xff0c;請聯系我0.0&#xff09; Mysql存儲千億級的數據&#xff0c;是一項非常大的挑戰。Mysql單表可以存儲10億級的數據&#xff0c;只是這個時候性能非常差&#xff0c;項目中大量的實驗證明&#xff0c;M…

hadoop-09-安裝資源上傳

hadoop-09-安裝資源上傳 在/software/www/html 下面上傳 ambari HDP HDP-UTILS-1.1.0.21 文件&#xff0c;之后解壓&#xff1b;

easyui 收費_收費班長喻玉華三尺崗亭獻青春

- 2020 第四期 人物訪談報道 -拼搏人生最美勵志先鋒人物專訪2013年&#xff0c;22歲的她來到巴南高速這個大家庭中&#xff0c;成為恩陽收費站一名普通的收費員。懷著對事業的執著追求與熱愛&#xff0c;經過兩年不懈的努力&#xff0c;獲得了領導和同事的認可和喜愛。2015年5月…

編程技術面試的五大要點

&#xff08;寫在前面的話&#xff1a;本文最初發表于《程序員》雜志2011年10月刊&#xff0c;并收錄到《劍指Offer——名企面試官精講典型編程題》一書中。&#xff09; 近年來找工作一直是一個很熱門的話題。我們要想找到心儀的工作&#xff0c;難免需要經過很多輪面試。編程…