TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #194 · 25 дек.

Как в простом скрипте выполнить отложенное действие или даже несколько? Например, нам требуется удалить файл через 10 секунд после его создания, но при этом основной поток не должен просто остановиться на 10 секунд с помощью time.sleep(). Допустим, у нас также нет никаких асинхронных очередей задач типа rq или celery. Самый простой способ это класс threading.Timer. Это удобный способ выполнить отложенное действие, которое не блокирует основной поток. А так же это пример как писать многопоточный код на базе класса threading.Thread. Всё что делает этот класс, это создаёт отдельный поток, в котором и будет запущена функция ожидания. from threading import Timer import os filename = '/home/user/data.txt' t = Timer(10, lambda: os.remove(filename)) t.start() Можно проверить выполнилось ли действие с помощью неблокирующго метода ивента is_set() if t.finished.is_set(): # do something или отменить выполнение t.cancel() А что будет если процесс интерпретатора завершится ДО завершения таймаута? Тут у нас два варианта: 🔸 Если поток запущен как Daemon то он завершится вместе с программой, тем самым отменив выполнение колбека. 🔸 В противном случае программа не завершится пока поток не завершится. По умолчанию режим Daemon отключен, то есть программа в любом случае дождётся исполнения колбека и только потом завершится. Переключение режима следует делать ДО запуска потока! t = Timer(...) t.setDaemon(True) t.start() #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #tricks

当前筛选 #tricks清除筛选
sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags