У меня есть следующий код в Python:Брус назначить нить локальной переменной
class gateWay:
def __init__(self):
self.var1 = []
self.var2 = {}
self.currentThread = None
def stateProcess(self, file):
# some irrelevant code
self.currentThread = saltGatWayThread(self, file).start()
return self.var1
def stopRunning(self):
self.currentThread.proc.stop()
Кроме того, здесь исходный код saltGatWayThread:
class saltGatWayThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
# some irrelevant code
self.proc = src.proc.Process1()
Кроме того, я следующий код в src/proc/__init__.py
:
class Process1:
def stop(self):
# code to stop operation
в консоли, я замечаю, что self.currentThread является недействительным.
Моя цель - сохранить поток в локальной переменной при запуске. Если я получаю запрос на прерывание, я применяю функцию stopRunning
. Эта функция берет сохраненный поток и выполняет «чистый» выход (завершает процесс протектора и выхода).
Почему я не могу сохранить нить и использовать ее структуру позже?
Вы уверены, что' stateProcess' бежится – Kevin
@Kevin.?: Да, я запускаю stateProcess и сразу после запуска stopRunning –
Итак, вы запускаете 'stopRunning' сначала, а затем запускаете' stateProcess' после этого? Но тогда 'self.currentThread.proc.stop()' должен поднять 'AttributeError: 'NoneType' объект не имеет атрибута 'proc'', поскольку' currentThread' еще не инициализирован. Это то, что вы видите? – Kevin