Skip to main content

Pickle function cache

Allows for caching of the results of function calls in a file using pickle (builtin shelve did not work for some reason and marshal was not considered; json was not able to serialize all the things I needed).

  • the file read happens only once per process per filename (all the function caches in the same cache file are loaded once)
  • if the result is not found in the cache, the result is computed using the original function and is written into the cache file and to the runtime cache.
  • if the result for the same set of arguments is requested and found the original function is not called but the cached result is returned.

Usage

from pickle_function_cache import cache_responses


@cache_responses("cache.dat")
def f1(param1, param2):
    ...  # take a lot of time


@cache_responses("cache.dat")
def f2(param1, param2, param3):
    ...  # take a lot of time

# use function normally ...
  • when first called, f1(1,2) computes the result using the original, f1
  • afterwards f1(1,2) returns the cached result, omitting the function call
  • if you call f2(1,2,3), it will be no trouble because function caches are stored separately per function name in the same file (note: cached function names should be unique)

Configuration

You can set the env var OMIT_PICKLE_FUNCTION_CACHE to either 1 or true to disable the cache at compile time without changing the code.

Performance

The cache was tested on a small set of quick functions and a small test list of examples and did not introduce a significant overhead. Probably, if the chosen functions for cache were more computationally intensive, we would see a speed-up because of the cache.

Metadata

Release files for pickle-function-cache 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pickle-function-cache 0.1.7
File Size Uploaded
pickle_function_cache-0.1.7.tar.gz 15.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pickle-function-cache 0.1.7
File Interpreter ABI Platform
pickle_function_cache-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 30.8 kB

Release files / pickle_function_cache-0.1.7.tar.gz

Download URL pickle_function_cache-0.1.7.tar.gz
Size 15.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3e3fb07c59b2b4a41313f4d13e2b762e6a70b8d1bb001086bc39cfc4cb945819
BLAKE2b-256 checksum
How to use checksums
f6d85f65455991de0daaebd68b2cf7d77a06a049a926518878849d01cac1835c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / pickle_function_cache-0.1.7-py3-none-any.whl

Download URL pickle_function_cache-0.1.7-py3-none-any.whl
Size 15.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
67ddb29186dc3043ec2fa69b65cd48781e9b17cf8ceb85085477e60a7baa0dd0
BLAKE2b-256 checksum
How to use checksums
eb2b282809375de70cc4e21bbdbe957496f2751ceb772e96f3d8d6036f1b3b4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page