threading.Timer () и уничтожение экземпляра - PullRequest
0 голосов
/ 15 сентября 2018

В интерактивном питоне я провел следующий эксперимент:

import threading

def hello():
    print "Hello World!"

def greeting():
    t = threading.Timer(5, hello)
    t.start()

greeting()
"Hello World!"  # After 5s delay.

Я был удивлен, что приветствие было напечатано с задержкой.Я думал, что выход из области видимости уничтожил бы экземпляр Timer, но имеет смысл, что сборщик мусора python будет выполнять эту роль?

Для моих нужд, поведение в приведенном выше эксперименте - то, что мне нужно, но я неНе думаю, что это гарантированно всегда работает.Или он всегда будет работать так, как показано?

спасибо.

1 Ответ

0 голосов
/ 15 сентября 2018

Можно с уверенностью предположить, что таймер выжил.

A Timer является производным от Thread, и работающий поток не уничтожается в Python только потому, что ссылки на объект потока больше не существуют (конечно, всегда существуют ссылки, удерживаемые самим интерпретатором Python).

...