Suppose I have a threading.Lock() object that I want to acquire in order to use a resource. Suppose I want to use a try ... except ... clause with a resource.
There are several ways to do this.
Method 1
import threading lock = threading.Lock() try: with lock: do_stuff1() do_stuff2() except: do_other_stuff()
If an error occurs during do_stuff1() or do_stuff2() , will the lock be released? Or is it better to use one of the following methods?
Method 2
with lock: try: do_stuff1() do_stuff2() except: do_other_stuff()
Method 3
lock.acquire(): try: do_stuff1() do_stuff2() except: do_other_stuff() finally: lock.release()
Which method is best for locking even if an error occurs?
source share