【发布时间】:2012-12-03 11:26:31
【问题描述】:
有一个方法很长的类。
为该方法创建一个线程。
我怎样才能杀死\终止这个线程?
主要问题是我无法在线程 run() 方法中检查 threading.Event,因为它不包含循环。
与此处类似的代码:
import time
import threading
class LongAction:
def time_consuming_action(self):
tmax = 600
for i in range(tmax):
print i
time.sleep(1)
time.sleep(tmax)
self.tmax = tmax
return "Slept well"
class LongActionThread(threading.Thread):
def __init__(self, la_object):
self.la = la_object
threading.Thread.__init__(self)
def run(self):
self.la.time_consuming_action()
la = LongAction()
la_thread = LongActionThread(la)
la_thread.start()
# After 5 sec i've changed my mind and trying to kill LongActionThread
time.sleep(5)
print "Trying to kill LongActionThread"
la_thread.kill()
【问题讨论】:
-
杀死一个线程通常不是一个好主意:stackoverflow.com/questions/323972/…
-
我明白,但我需要。阅读此链接,但第一个示例没有帮助。我想只有一种方法 - 除了例外?
-
如果您可能需要终止一个任务,那么在进程中运行它比在线程中运行要好得多。例如,参见multiprocessing 模块。
-
你在 Python 中的 time_sumption_action 是真实的吗?它是否包含一个可以插入事件检查的循环?
-
time_sourcing_action 是在 Python 中,但我无法更改它。
标签: python multithreading kill