有一个方法很长的类。
为该方法创建线程。
如何杀死/终止此线程?
主要问题是,我无法检查threadrun()方法中的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()
虽然杀死线程不是一个好主意,但如果您真的必须这么做,最简单的解决方案是实现一个正在运行的信号量,将耗时的方法划分为子方法,并检查子方法之间的线程状态。
部分代码从this SO question复制:
此代码工作正常,但需要显式刷新标准输出中的数据。
还没有找到一种不冲洗指纹的方法。
相关问题 更多 >
编程相关推荐