Manual/deterministic releasing of interface pointers
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
Direzione di ricerca
Inizia in comtypes/_post_coinit/unknwn.py alle righe 272-284 e verifica come del chiami attualmente Release(). Confronta questo ciclo di vita con il comportamento del context manager descritto nell’issue, incluso il modo in cui il rilascio manuale dovrebbe interagire con la finalizzazione successiva. Il lavoro è completato quando è definito un meccanismo di rilascio deterministico senza rilasciare due volte la stessa interfaccia COM.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I wonder, is it possible to release a COM interface pointer manually by calling Release(), instead of waiting for its __del__ to be called?
The problem of this method is that Release() is still called when __del__ is called.
__del__() in Python cannot be used to achieve deterministic destruction, like destructors in C++ do. In the docs:
del() can be invoked when arbitrary code is being executed, including from any arbitrary thread.
This would cause some problems if I want a certain COM object to be released at or before a certain time.
Although CPython uses reference counting, so usually the object will be released when the last reference is removed, it isn't necessarily the case in other Python implementations.
A common solution is to use the context manager. Implement __enter__ and __exit__, so that it can be used in a with block, and be automatically released when leaving the with block. Many resource objects, such as files, already support the context manager protocol.
- Lingua principale
- Python
- Stelle
- 347
- Fork
- 107
- Merge medio
- 19h 36m
- PR unite (30g)
- 17
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di enthought/comtypes
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
typing
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
question
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
enthought/comtypes#935 · 10 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[CI] Run tests on ARMApertaci tests
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
enthought/comtypes#925 · 11 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
enthought/comtypes#873 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di enthought/comtypes
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
huggingface/sentence-transformers#4186 ·
I maintainer di solito rispondono entro 5 giorni
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
QuantEcon/QuantEcon.py#988 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
fabriziosalmi/certmate#1247 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
sujithputta02/Esapay#13 ·