У меня есть код, который устанавливает обработчик прерывания в основном потоке и запускает цикл в стороннем потоке. Это делается для того, чтобы я мог нажать Ctrl-C для основного потока, чтобы сигнализировать циклу о корректном завершении работы, и все это происходит внутри одного класса, который выглядит так:
class MyClass:
# non-relevant stuff omitted for brevity
def run(self):
with concurrent.futures.ThreadPoolExecutor() as executor:
future = executor.submit(self.my_loop, self.arg_1, self.arg_2)
try:
future.result()
except KeyboardInterrupt as e:
self.exit_event.set() # read in my_loop(), exits after finishing an iteration
future.result()
Это прекрасно работает. Мой вопрос заключается в том, существуют ли особые типы объектов или характеристики объектов, о которых я должен знать при таком подходе, особенно в отношении себя. участники MyClass? Я думаю, это нормально, потому что my_loop порождается внутри MyClass, и поэтому нет копий самого себя. свойства сделаны - первоначальное тестирование указывает на то, что это так. Мне действительно интересно, есть ли какие-либо более экзотические объекты (например, не подвергающиеся травлению, которые отлично работают в этом), которые я должен рассмотреть?