/ gevent Public
Fix py3 socket slots #1724
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge.
Was casually reading gevent source code, found something interesting: python3 socket is not using slots properly.
_write_eventinstance attrs are added to
__slots__. The problematic class attrs mask the slots, and that change was made in 2018 and the
SocketMixinwith slots was added in 2020. I think it should be just a careless mistake (and it didn't do much harm indeed).
Before change (gevent master, py38):
No memory usage change. Marginal performance gain (<10%) from using slots for attr access. My laptop produces unstable microbenchmarks so you may get a different number.