On 09/07/2017 06:41 AM, Elvis Pranskevichus wrote: > On Thursday, September 7, 2017 9:05:58 AM EDT Ethan Furman wrote: >> The disagreement seems to be whether a LogicalContext should be >> created implicitly vs explicitly (or opt-out vs opt-in). As a user >> trying to track down a decimal context change not propagating, I >> would not suspect the above code of automatically creating a >> LogicalContext and isolating the change, whereas Greg's context >> manager version is abundantly clear. >> >> The implicit vs explicit argument comes down, I think, to resource >> management: some resources in Python are automatically managed >> (memory), and some are not (files) -- which type should LCs be? > > You are confusing resource management with the isolation mechanism. PEP > 550 contextvars are analogous to threading.local(), which the PEP makes > very clear from the outset. I might be, and I wouldn't be surprised. :) On the other hand, one can look at isolation as being a resource. > threading.local(), the isolation mechanism, is *implicit*. I don't think so. You don't get threading.local() unless you call it -- that makes it explicit. > decimal.localcontext() is an *explicit* resource manager that relies on > threading.local() magic. PEP 550 simply provides a threading.local() > alternative that works in tasks and generators. That's it! The concern is *how* PEP 550 provides it: - explicitly, like threading.local(): has to be set up manually, preferably with a context manager - implicitly: it just happens under certain conditions -- ~Ethan~
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4