-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
performancePerformance or resource usagePerformance or resource usagetopic-free-threadingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
PyType_IsSubtype
takes the type lock to ensure that MRO is being accessed in a thread-safe manner as it needs to read and incref it. This can result in heavy contention in some pretty common scenarios (e.g. when sys.setprofile
is used we experience heavy contention across threads doing PyCFunction_Check
, profiling simple workloads can be nearly 50% slower in some cases). We can avoid this by using Py_TryIncref
and only fallback to the lock when the MRO isn't yet shared.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Assignees
Labels
performancePerformance or resource usagePerformance or resource usagetopic-free-threadingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error