Skip to main content

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. This 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, clone or fork this repository.

There are to branches:

  • PyPI: the main branch, for releases.
  • TestPyPI: for pre-releases or development versions.

Pull requests from TestPyPI to PyPI will be accepted when a new release is finished.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memorymanagement-1.1.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memorymanagement-1.1.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file memorymanagement-1.1.0.tar.gz.

File metadata

  • Download URL: memorymanagement-1.1.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for memorymanagement-1.1.0.tar.gz
Algorithm Hash digest
SHA256 be033865a6614d205bc55c92243877477dd2441234133ca80d019e1d8368363d
MD5 71bd26ff429d4dcdfff687c59a906ad8
BLAKE2b-256 b4bfef371b9489add34874248efed8025a454711818f56ecf2a87236384c51b4

See more details on using hashes here.

File details

Details for the file memorymanagement-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for memorymanagement-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3e939ab7491ac0b30a4794963c07fc1634301a122d6f499cf4417bba1cf0769
MD5 ab2b463f304087e098348ae068751379
BLAKE2b-256 f4a940463ae44bd4a4e401b22c76f09607cdba4d6fb8bea620ae67d5109074f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page