2016-05-11 1 views
1

Я разрабатываю приложение, основанное на Linux, но прямо сейчас я сталкиваюсь с тем, что мне нужно вызвать веб-браузер для выполнения следующей задачи, но проблема в том, что программа застревает и не заканчивается. Я попытался прервать его, используя нить, но она не получает прерывание и нитку бесконечно, ниже основная версия кода я был trying.Hope вы получили мою проблему,Как закончить поток, который вызывает веб-браузер в python

import time 
import threading 
import webbrowser 

class CountdownTask: 
    def __init__(self): 
     self._running = True 

    def terminate(self): 
     self._running = False 

    def run(self): 
     url='http://www.google.com' 
     webbrowser.open(url,new=1) 

c = CountdownTask() 
t = threading.Thread(target=c.run) 
t.start() 
time.sleep(1) 
c.terminate() # Signal termination 
t.join()  # Wait for actual termination (if needed) 
+0

' t.terminate() '... но afaik это работает только на linux –

+0

спасибо, что я получил трюк, я сделал небольшую модификацию, я использовал« Countdowntask »в качестве потока, а затем t.terminate работал отлично.' class CountdownTask (threading.Thread): ' –

ответ

1
import time 
import threading 
import webbrowser 

class CountdownTask(threading.Thread): 
    def __init__(self): 
     threading.Thread.__init__(self) 
     self._running = True 

    def terminate(self): 
     self._running = False 

    def run(self): 
     url='http://www.google.com' 
     webbrowser.open(url,new=1) 

t = CountdownTask() 
t.start() 
time.sleep(1) 
t.terminate() # Signal termination 
t.join()  # Wait for actual termination (if needed)