Use the thread lock's context manager instead of a try/finally statement.
diff --git a/Lib/_strptime.py b/Lib/_strptime.py
index baafe9a..5ea59ed 100644
--- a/Lib/_strptime.py
+++ b/Lib/_strptime.py
@@ -294,8 +294,7 @@
def strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
"""Return a time struct based on the input string and the format string."""
global _TimeRE_cache, _regex_cache
- _cache_lock.acquire()
- try:
+ with _cache_lock:
time_re = _TimeRE_cache
locale_time = time_re.locale_time
if _getlang() != locale_time.lang:
@@ -320,8 +319,6 @@
except IndexError:
raise ValueError("stray %% in format '%s'" % format)
_regex_cache[format] = format_regex
- finally:
- _cache_lock.release()
found = format_regex.match(data_string)
if not found:
raise ValueError("time data %r does not match format %r" %