Lifetime of a local reference
Thomas Jollans
tjol at tjol.eu
Wed Feb 27 10:55:51 EST 2019
On 27/02/2019 16.41, Marko Rauhamaa wrote:
> Rhodri James <rhodri at kynesim.co.uk>:
>> The description of the with statement does explicitly say that the
>> context manager's __exit__() method won't be called until the suite
>> has been executed, so the reference to the open file must exist for at
>> least that long.
>
> Yeah, but the *true* answer, of course, is:
>
> def fun():
> f = os.open("lock", os.O_RDONLY)
> flock.flock(f, fcntl.LOCK_EX)
> do_stuff()
> sys.exit(0)
>
> Collect that!
No problemo!
try:
fun()
except SystemExit:
print("Oh no you don't!")
Collect this:
def fun():
f = os.open("lock", os.O_RDONLY)
flock.flock(f, fcntl.LOCK_EX)
do_stuff()
os.kill(os.getpid(), 9)
;-)
⸺ Thomas
More information about the Python-list
mailing list