導航:首頁 > 編程語言 > pythonthreadkill

pythonthreadkill

發布時間:2023-08-25 10:58:23

『壹』 python 怎麼殺死指定線程名的線程

這幾天在實踐的時候,有一個問題一直在困擾我,比如timer,定時器,Python沒有這么好的機制,需要自己實現。這個網上也是有一些。但是我自己的需求可能並不一樣。

需求:
我需要一個函數工作,比如遠程連接一個埠,遠程讀取文件等,但是我給的時間有限,比如,4秒鍾如果你還沒有讀取完成或者連接成功,我就不等了,很可能對方已經宕機或者拒絕了。這樣可以批量做一些事情而不需要一直等,浪費時間。
定時器是最好的,我覺得這個需求,一旦定時過了,就將這個讀取函數直接kill。但是這出現了問題。
第一,怎麼定時?
第二,時間到了,怎麼kill函數
第三,定時函數和kill函數怎麼判斷該kill了。
寫一個多線程,一個線程專門用來計時間,一個用來執行函數,一旦時間到了,就殺死執行函數的線程。我在多線程,python很弱,似乎沒有這樣的比較簡單的一個介面就調用的。不像windows編程。那麼,該怎辦?

結合我的需求,我這么做:
1、在主進程執行,調用一個進程執行函數,然後主進程sleep,等時間到了,就kill 執行函數的進程。
測試一個例子:

[python] view plain
import time
import threading

def p(i):
print i

class task(threading.Thread):
def __init__(self,fun,i):
threading.Thread.__init__(self)
self.fun = fun
self.i = i
self.thread_stop = False

def run(self):
while not self.thread_stop:
self.fun(self.i)

def stop(self):
self.thread_stop = True

def test():
thread1 = task(p,2)
thread1.start()
time.sleep(4)
thread1.stop()

『貳』 Python中threading的join和setDaemon的區別及用法

python中得thread的一些機制和C/C++不同:在C/C++中,主線程結束後,其子線程會默認被主線程kill掉。而塵手在python中,主線程結束後,會默認等待子線程結束後,主線程才退出。
激讓python對於thread的管理中有兩個函數:join和setDaemon
派鉛嫌join:如在一個線程B中調用threada.join(),則threada結束後,線程B才會接著threada.join()往後運行。
setDaemon:主線程A啟動了子線程B,調用b.setDaemaon(True),則主線程結束時,會把子線程B也殺死,與C/C++中得默認效果是一樣的。
在這里給出一個例子:
#! /usr/bin/env python
import threading
import time

class myThread(threading.Thread):
def __init__(self, threadname):
threading.Thread.__init__(self, name=threadname)
self.st = 2

def run(self):
time.sleep(self.st)
print self.getName()
def setSt(self, t):
self.st = t

def fun1():
t1.start()
print "fun1 done"

def fun2():
t2.start()
print "fun2 done"

t1=myThread("t1")
t2=myThread("t2")
t2.setSt(10);
# t2.setDaemon(True)
fun1()
fun2()
print "now u will see me"

『叄』 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的問題.怎麼終止一個子線程

等待串口數據導致線程自己sleep而沒有機會執行,主線程的join沒法繼續,方法就是這樣的,換成這個能執行

fromthreadingimport*
importtime

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

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

tr=MyThread()
tr.setDaemon(True)
tr.start()
time.sleep(1)
tr.stop()
tr.join()

這樣就更直觀了

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()
閱讀全文

與pythonthreadkill相關的資料

熱點內容
文電通pdfgold 瀏覽:853
上傳圖片的時候怎麼壓縮 瀏覽:31
千尋伺服器地址 瀏覽:812
ssh命令教程視頻 瀏覽:401
蘋果商店怎麼更新所有app 瀏覽:34
電影香港加密 瀏覽:595
壓縮機毛細管滴水 瀏覽:850
可視化編程網頁 瀏覽:389
工廠附近租房用什麼app 瀏覽:186
老闆改需求甩鍋程序員 瀏覽:657
樂貓app是什麼平台 瀏覽:922
方舟手游如何修改伺服器後台 瀏覽:815
程序員考試教程 瀏覽:219
文件名修改為文件夾的名字批處理 瀏覽:251
拍照程序員 瀏覽:827
wps怎麼把pdf轉jpg 瀏覽:217
自拍用什麼app做的藝術照 瀏覽:169
h3c無線配置命令 瀏覽:515
linux代碼閱讀工具 瀏覽:160
能夠畫出對稱圖形的是什麼app 瀏覽:424