Lock contention inside _PyType_LookupRef
#132380
Labels
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
performance
Performance or resource usage
topic-free-threading
type-feature
A feature request or enhancement
Feature or enhancement
Proposal:
As part of adding free-threading support to LibCST, we noticed there is a lot of lock contention on
TYPE_LOCK
inside the_PyType_LookupRef
function. In the LibCST, the common "visitor" pattern is used. For example, in the_visitors.py
module there is the code:The second argument to
getattr()
is a non-interned string and it causes the cached and lock-free path of_PyType_LookupRef()
never to be taken. Instead, theTYPE_LOCK
mutex is acquired on each lookup. This obviously scales very badly if there are multiple threads looking up class methods using this pattern.Testing was done with Python 3.13 but I believe the same issue exists with 3.14.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
The text was updated successfully, but these errors were encountered: