That I hope it's not the place where this proposal will be sent. My idea is apparently simple: what if, anytime we create an object, instead of deleting it, we send it in a trash bin? If the object is, for some reason, recreated, we can take it from the trash bin. If there is no more memory, the trash bin will be empty. The problem is that, probably, args and kwargs used by object creation must be stored. Maybe also copied? This could slow down the object creation instead of speed it up? Could this be done by a separate thread?
On Sat, Sep 26, 2020 at 2:19 AM Marco Sulla <Marco.Sulla.Python@gmail.com> wrote:
That I hope it's not the place where this proposal will be sent.
My idea is apparently simple: what if, anytime we create an object, instead of deleting it, we send it in a trash bin? If the object is, for some reason, recreated, we can take it from the trash bin. If there is no more memory, the trash bin will be empty.
The problem is that, probably, args and kwargs used by object creation must be stored. Maybe also copied? This could slow down the object creation instead of speed it up? Could this be done by a separate thread?
This is actually the way certain objects ARE handled, but since memory is allocated in chunks (not all objects are the same size), there are in fact several "trash bins". They're called "free lists" and you can explore the CPython source code if you're curious about how they work! For info on free lists in general, Wikipedia might be of value: https://en.wikipedia.org/wiki/Free_list ChrisA
On Fri, 2020-09-25 at 18:19 +0200, Marco Sulla wrote:
That I hope it's not the place where this proposal will be sent.
My idea is apparently simple: what if, anytime we create an object, instead of deleting it, we send it in a trash bin? If the object is, for some reason, recreated, we can take it from the trash bin. If there is no more memory, the trash bin will be empty.
The problem is that, probably, args and kwargs used by object creation must be stored. Maybe also copied? This could slow down the object creation instead of speed it up? Could this be done by a separate thread?
This would assume that said objects: a) are immutable and b) initialize to identical values for a given *args and **kwargs.
On 9/25/2020 1:34 PM, Paul Bryan wrote:
On Fri, 2020-09-25 at 18:19 +0200, Marco Sulla wrote:
That I hope it's not the place where this proposal will be sent. My idea is apparently simple: what if, anytime we create an object, instead of deleting it, we send it in a trash bin? If the object is, for some reason, recreated, we can take it from the trash bin. If there is no more memory, the trash bin will be empty. The problem is that, probably, args and kwargs used by object creation must be stored. Maybe also copied? This could slow down the object creation instead of speed it up? Could this be done by a separate thread? This would assume that said objects: a) are immutable and b) initialize to identical values for a given *args and **kwargs.
And if that's true, then the OP's purpose could be served by a function that uses collections.lru_cache() to generate their objects. The arguments would also have to be hashable, but if they're immutable then hashable is easy. Eric
participants (4)
-
Chris Angelico
-
Eric V. Smith
-
Marco Sulla
-
Paul Bryan