Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions Lib/asyncio/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -611,8 +611,7 @@ def new_event_loop(self):

# A TLS for the running event loop, used by _get_running_loop.
class _RunningLoop(threading.local):
_loop = None
_pid = None
loop_pid = (None, None)


_running_loop = _RunningLoop()
Expand All @@ -624,8 +623,8 @@ def _get_running_loop():
This is a low-level function intended to be used by event loops.
This function is thread-specific.
"""
running_loop = _running_loop._loop
if running_loop is not None and _running_loop._pid == os.getpid():
running_loop, pid = _running_loop.loop_pid
if running_loop is not None and pid == os.getpid():
return running_loop


Expand All @@ -635,8 +634,7 @@ def _set_running_loop(loop):
This is a low-level function intended to be used by event loops.
This function is thread-specific.
"""
_running_loop._pid = os.getpid()
_running_loop._loop = loop
_running_loop.loop_pid = (loop, os.getpid())


def _init_event_loop_policy():
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Micro-optimize :func:`asyncio._get_running_loop` to become up to 10% faster.