Adds support for memory management
Project description
memorymanagement
Provides memory management support.
The only Python implementation currently supported is the one made by the CPython team. The rest remain untested.
Modules
cleaning
Provides the class Cleaner, which allows you to flag references stored in memory to eventually erase them.
It is also possible to modify the list of flagged references through its methods.
pointers
Provides a safe implementation of pointers for Python.
Class Pointer
The pointer itself. Imitates the behaviour of C pointers. Pointer points to a reference, not to an object stored in memory.
Decorator pointerize
Allows functions to receive pointers instead of values.
Installation
You can install the memorymanagement package from PyPI as follows:
pip install memorymanagement
How to use
Class Cleaner
# Imports
# Make your imports here
from memorymanagement import Cleaner # Importing class Cleaner
Right after imports are done, I recommend to initialize an instance of class Cleaner, so no arguments are needed. This is the optimal use this class was designed for.
# Initialize cleaner object
cleaner=Cleaner()
Create, for example, these global variables:
value_1=10
value_2=50
value_3=100
Update the list of flagged references like one of the following:
-
Including all new global variables:
cleaner.update() print(cleaner.flagged)
Output:
["value_1","value_2","value_3"]
-
Excluding some variables:
cleaner.update(exclude="value_2") print(cleaner.flagged)
Output:
["value_1","value_3"]
cleaner.update(exclude=["value_2","value_3"]) print(cleaner.flagged)
Output:
["value_1"]
-
Include again some variables:
After having excluded some variables
cleaner.update(exclude=["value_2","value_3"])
You can reintroduce them
# Create a new variable and update value_4=150 cleaner.update(exclude="value_4",include="value_2") # "include" can also be a list of strings print(cleaner.flagged)
Output:
["value_1","value_2"]
You can also directly include or exclude references like so:
cleaner.exclude(<name_var_1>,<name_var_2>,...)
cleaner.include(<name_var_1>,<name_var_2>,...)
Class Pointer
Example:
from memorymanagement import Pointer
a=10
x=Pointer(a)
print(f"a:\n{a}\n\nPointer:\n{x.value}\n\n")
a=20
print(f"a:\n{a}\n\nPointer:\n{x.value}\n\n")
a=10
x.value=20
print(f"a:\n{a}\n\nPointer:\n{x.value}")
Output:
a:
10
Pointer:
10
a:
20
Pointer:
20
a:
20
Pointer:
20
Decorator pointerize
Example:
from memorymanagement import pointerize
@pointerize
def myFunction(value:int):
value=20
return
a=10
print(f"Value: {a}")
myFunction(Pointer(a))
print(f"Value: {a}")
Output:
Value: 10
Value: 20
Contribution
To contribute to this project fork this repository and clone your fork. Pull requests will be revised by the owner before being accepted or rejected.
There are two branches:
- PyPI: the main branch, for releases.
- TestPyPI: for pre-releases or development versions.
Pull requests from TestPyPI to PyPI will only be done by the owner when a new release is ready.
Branch merging
To merge branches properly with PyPI branch in your cloned repository, you will need to have the .gitattributes file in the PyPI branch and execute the following commands, while in repo directory, in your PowerShell:
git config merge.keepPyPIFiles.name "Keep README.md and setup.cfg from PyPI branch on merge"
git config merge.keepPyPIFiles.driver "bash -c 'cp $(git rev-parse --show-toplevel)/$3 $2'"
This way, README.md and setup.cfg files will not be overwritten in the PyPI branch.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memorymanagement-1.2.0.tar.gz.
File metadata
- Download URL: memorymanagement-1.2.0.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c9b8f94158ae92ffbf46449a0561706d5efad2e751d6ef870d3f0760d502729
|
|
| MD5 |
94147fa3f451a3e6ac3598ae0d1ad418
|
|
| BLAKE2b-256 |
604df3b0044c2cde351cf650064f345a2d7ab5f8887bce10e2669b1ff6316d1d
|
File details
Details for the file memorymanagement-1.2.0-py3-none-any.whl.
File metadata
- Download URL: memorymanagement-1.2.0-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc29f2a4fc3fa1e66d1df0185f6a06d4ff0a12c1000a6c15f261986c48a4b137
|
|
| MD5 |
341dfbf5bdf373621de4d5657c744319
|
|
| BLAKE2b-256 |
660a945ee21e4c00e2bedcaf884b5da0972ad722244e61d2b40cb9f738ec1094
|