Adding Context Manger to threading.Timer
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Feature or enhancement
Proposal:
Proposing to add context management to threading.Timer.
I had an issue where I didn’t want to ask the user to be patient unless they had already been waiting a while. Timer works nicely for this:
t = Timer(1, print, ("Trust me, I'm on it...",))
t.start()
time.sleep(2)
t.cancel()
Enclosing calls of start and cancel call out for context management for the obvious reasons. Sub-classing and adding it was trivial:
class Timer(Timer):
def __enter__(self):
self.start()
def __exit__(self, exc_type, exc_val, exc_tb):
self.cancel()
The first example now looks like this:
with Timer(1, print, ("Trust me, I'm on it...",)):
time.sleep(2)
Users of the threading module will probably already be familiar with the context management features of a lock. Chaining the two together is a great way to provide feedback IF it’s needed, gotta reduce that alarm fatigue!
hold_message = Timer(10, print, ("Please hold, your call is important to us...",))
with some_lock, hold_message:
...
Looking to exact those changes on the core library
Has this already been discussed elsewhere?
I have already discussed this feature proposal on Discourse
Links to previous discussion of this feature:
https://discuss.python.org/t/adding-context-manger-to-threading-timer/64083
Linked PRs
- gh-125501
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem Einstiegspunkt threading.Timer und prüfe die verknüpfte Discourse-Diskussion und PR gh-125501. Erledigt ist die Aufgabe, wenn Timer die vorgeschlagene Verwendung zur Kontextverwaltung unterstützt, beim Eintritt gestartet und beim Verlassen abgebrochen wird, wobei das Verhalten gegebenenfalls durch die bestehenden threading-Tests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- operating-systems
- Issue-Typ
- Feature
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100