當前位置:首頁 » 編程語言 » python停止線程

python停止線程

發布時間: 2022-06-23 15:24:29

python中怎麼在終止一個線程的同時終止另外一個線程

設置一個全局變數,初值為False
設置鍵盤監聽事件,當監測到特定按鍵時,將全局變數的值修改為True
在每個子線程中,循環檢測全局變數的值,當檢測到值為True時退出線程函數。

❷ python里如何終止線程 比如線程里調用os.system('adb logcat')這個是不會停止的

如果直接終止線程不清楚,要不曲線下,新開啟一個進程,再得到這個進程id,然後幹掉這個進程
import
multiprocessing
def
NewProcess():
global
id
id=os.getpid()
os.system('adb
logcat')
NP=multiporcess.Process(target=one
function,args=())
NP.start()
os.kill(id,9)

❸ Python里如何終止一個線程

Python用sleep停止一個線程的運行,而不影響主線程的運行,案例代碼如下:

fromthreadingimport*
importtime

classMyThread(Thread):
defrun(self):
self.ifdo=True;
whileself.ifdo:
print'Iamrunning...'
time.sleep(2)

defstop(self):
print'Iamstoppingit...'
self.ifdo=False;

tr=MyThread()
tr.setDaemon(True)
tr.start()
print'Iwillstopit...'
time.sleep(5)
tr.stop()
tr.join()

❹ python線程停止壞處

可以通過以下方式來終止線程:

_ü壯鮃斐@粗罩菇?

_ü桓鮒罩貢曛糾粗罩菇?

_褂_races來終止進程

_褂枚嘞叱棠P屠粗罩菇?

_ü躺柚夢_eamon來終止進程

_褂靡厥糶_stop()

?

❺ python中如何中止一個線程

簡單來說,它kill的原理是設置一個flag位,然後線程在執行下一句python語句檢測到這個位被設置了之後,就會自行退出,以達到kill的目的。 另外還有一種更容易理解的flag置位的實現方式:classKillableThread(threading.Thread):def__init__(self):threading.Thread. __init__(self)self.stop = Falsedefrun(self):whilenotself.stop:somefunction() 這種方式相比第一種而言,又有一點不足:kill生效的時限,最大等於somefunction執行一遍所花的時間。 而第一種方式,在下一句python語句執行時就會生效。 不過可以料想,第一種實現方式,整體的執行效率會慢一點。

❻ 如何控制和關閉python 線程

辦法很多。通常的辦法是,子線程出異常後,主進程檢查到它的狀態不正常,然後自己主動將其餘線程退出,最後自己再退出。這是穩妥的辦法。
另外的辦法是,某一個子線程專用於監控狀態。它發現狀態不對時,直接強制進程退出。辦法1,發消息給主進程,讓主進程退出。辦法2:用kill,
pskill等方法,直接按進程pid殺進程。

❼ Python 如何強制中止線程

Python用sleep停止一個線程的運行,而不影響主線程的運行,案例代碼如下:

from threading import *import time class MyThread(Thread): def run (self): self.ifdo = True; while self.ifdo: print 'I am running...' time.sleep(2) def stop (self): print 'I am stopping it...' self.ifdo = False; tr = MyThread()tr.setDaemon(True)tr.start()print 'I will stop it...'time.sleep(5)tr.stop()tr.join()

❽ python 在線程函數中如何實現線程的暫停、恢復和終止

我們都知道python中可以是threading模塊實現多線程, 但是模塊並沒有提供暫停, 恢復和停止線程的方法, 一旦線程對象調用start方法後, 只能等到對應的方法函數運行完畢. 也就是說一旦start後, 線程就屬於失控狀態. 不過, 我們可以自己實現這些. 一般的方法就是循環地判斷一個標志位, 一旦標志位到達到預定的值, 就退出循環. 這樣就能做到退出線程了. 但暫停和恢復線程就有點難了, 我一直也不清除有什麼好的方法

❾ 求助python多線程,執行到100多個停止了

python 線程 暫停, 恢復, 退出
我們都知道python中可以是threading模塊實現多線程, 但是模塊並沒有提供暫停, 恢復和停止線程的方法, 一旦線程對象調用start方法後, 只能等到對應的方法函數運行完畢. 也就是說一旦start後, 線程就屬於失控狀態. 不過, 我們可以自己實現這些. 一般的方法就是循環地判斷一個標志位, 一旦標志位到達到預定的值, 就退出循環. 這樣就能做到退出線程了. 但暫停和恢復線程就有點難了, 我一直也不清除有什麼好的方法, 直到我看到threading中Event對象的wait方法的描述時.
wait([timeout])
Block until the internal flag is true. If the internal flag is true on entry, return immediately. Otherwise, block until another thread calls set() to set the flag to true, or until the optional timeout occurs.
阻塞, 直到內部的標志位為True時. 如果在內部的標志位在進入時為True時, 立即返回. 否則, 阻塞直到其他線程調用set()方法將標准位設為True, 或者到達了可選的timeout時間.
When the timeout argument is present and not None, it should be a floating point number specifying a timeout for the operation in seconds (or fractions thereof).
This method returns the internal flag on exit, so it will always return True except if a timeout is given and the operation times out.
當給定了timeout參數且不為None, 它應該是一個浮點數,以秒為單位指定操作的超時(或是分數)。
此方法在退出時返回內部標志,因此除非給定了超時且操作超時,否則它將始終返回True。
Changed in version 2.7: Previously, the method always returned None.
2.7版本以前, 這個方法總會返回None.
<br>
利用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()
<br>
測試的結果:
這完成了暫停, 恢復和停止的功能. 但是這里有一個缺點: 無論是暫停還是停止, 都不是瞬時的, 必須等待run函數內部的運行到達標志位判斷時才有效. 也就是說操作會滯後一次.
但是這有時也不一定是壞事. 如果run函數中涉及了文件操作或資料庫操作等, 完整地運行一次後再退出, 反而能夠執行剩餘的資源釋放操作的代碼(例如各種close). 不會出現程序的文件操作符超出上限, 資料庫連接未釋放等尷尬的情況.

❿ Python 如何強制關閉線程

Python用sleep停止一個線程的運行,而不影響主線程的運行,案例代碼如下:

from threading import *import time class MyThread(Thread): def run (self): self.ifdo = True; while self.ifdo: print 'I am running...' time.sleep(2) def stop (self): print 'I am stopping it...' self.ifdo = False; tr = MyThread()tr.setDaemon(True)tr.start()print 'I will stop it...'time.sleep(5)tr.stop()tr.join()

熱點內容
案件雲存儲 發布:2022-07-05 15:14:28 瀏覽:648
新1500plc怎麼配置 發布:2022-07-05 15:12:44 瀏覽:296
php傳遞json 發布:2022-07-05 15:09:52 瀏覽:999
安卓崽崽zepeto在哪裡下 發布:2022-07-05 15:08:35 瀏覽:711
王者的安卓區轉蘋果區怎麼轉 發布:2022-07-05 15:08:18 瀏覽:603
方舟生存進化應該選擇怎麼樣伺服器 發布:2022-07-05 15:08:13 瀏覽:2
移動硬碟出現拒絕訪問 發布:2022-07-05 15:02:38 瀏覽:467
javajson後台 發布:2022-07-05 15:00:38 瀏覽:463
redis配置外網訪問 發布:2022-07-05 15:00:12 瀏覽:416
沒連上伺服器是什麼意思打卡機 發布:2022-07-05 14:57:35 瀏覽:759