|
Original |
Translation |
|
2910
|
|
|
|
2911
|
New :class:`~sqlite3.Connection` attribute :attr:`~sqlite3.Connection.in_transaction` is :const:`True` when there are uncommitted changes, and :const:`False` otherwise. (Contributed by R. David Murray and Shashwat Anand, :issue:`8845`.)
|
|
|
2912
|
|
|
|
2913
|
The mechanism for serializing execution of concurrently running Python threads (generally known as the GIL or Global Interpreter Lock) has been rewritten. Among the objectives were more predictable switching intervals and reduced overhead due to lock contention and the number of ensuing system calls. The notion of a "check interval" to allow thread switches has been abandoned and replaced by an absolute duration expressed in seconds. This parameter is tunable through :func:`sys.setswitchinterval()`. It currently defaults to 5 milliseconds.
|
|
|
2914
|
|
2915
|
Recursive locks (created with the :func:`threading.RLock` API) now benefit from a C implementation which makes them as fast as regular locks, and between 10x and 15x faster than their previous pure Python implementation.
|
|
|
2916
|
(Contributed by Antoine Pitrou; :issue:`3001`.)
|
|
|
2917
|
Regular and recursive locks now accept an optional *timeout* argument to their ``acquire`` method. (Contributed by Antoine Pitrou; :issue:`7316`) Similarly, :meth:`threading.Semaphore.acquire` also gains a *timeout* argument. (Contributed by Torsten Landschoff; :issue:`850728`.)
|
|
|
2918
|
|
|
|
2919
|
bytearray objects cannot be used anymore as filenames: convert them to bytes
|
|
|
2920
|
PyArg_Parse*() functions:
|
|
|
2921
|
"t#" format has been removed: use "s#" or "s*" instead
|
|
|
2922
|
"w" and "w#" formats has been removed: use "w*" instead
|
|
|
2923
|
|
|
|
2924
|
The "What's New in Python" series of essays takes tours through the most important changes between major Python versions. They are a "must read" for anyone wishing to stay up-to-date after a new release.
|
|