Skip to main content

Persistent Memory

Project description

install

pip install skpmem

skpmem/async_pmem.py の特徴

  • 非同期対応の永続メモリクラス PersistentMemory を提供
  • SQLite データベースを用いてデータを永続化
  • 非同期での保存・読み込みが可能
  • 非同期コンテキストマネージャ対応(async with で利用可能)
  • 自動的にテーブル作成・初期化を実施
  • 内部で書き込みキューを持ち、効率的にデータベースへ反映

使用例

import asyncio
from skpmem.async_pmem import PersistentMemory

async def main():
    # ログ出力の設定(任意)
    import logging
    logging.basicConfig(level=logging.INFO)

    # 永続メモリのインスタンス作成
    async with PersistentMemory('my_custom_database.db') as mem:
        # データの保存
        await mem.save("test_key", "test_value")
        # データの読み込み
        value = await mem.load("test_key")
        print(f"Loaded value1: {value}")

        # デフォルト値付きでカウンタを取得・更新
        counter = await mem.load("counter", 0)
        print(f"Counter: {counter}")
        counter += 1
        await mem.save("counter", counter)

asyncio.run(main())

dictライクなアクセス

PersistentMemorydict のようなアクセスも一部サポートしています。

  • mem["key"] = value で値を保存(非同期でDBにも保存されます)
  • value = mem["key"] でキャッシュから値を取得(キャッシュにない場合は KeyError。初回は await mem.load("key") でロードしてください)
  • del mem["key"] でキャッシュとDBから削除(DB削除は非同期)
async with PersistentMemory('my_custom_database.db') as mem:
    await mem.save("foo", 123)      # 通常の保存
    mem["bar"] = 456               # dict風の保存(非同期でDBにも保存)

    await mem.load("bar")          # DBからロードしキャッシュ
    print(mem["bar"])              # キャッシュから取得

    del mem["bar"]                 # キャッシュとDBから削除
  • save(key, value) でデータを保存
  • load(key, defval=None) でデータを取得(存在しない場合は defval を返す)
  • 非同期で複数の保存・取得操作が可能
  • データは SQLite データベースに永続化される

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

skpmem-0.1.7.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

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

skpmem-0.1.7-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file skpmem-0.1.7.tar.gz.

File metadata

  • Download URL: skpmem-0.1.7.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.1

File hashes

Hashes for skpmem-0.1.7.tar.gz
Algorithm Hash digest
SHA256 9368b7a25e402e11e7623986070644c2503516c96777bee3be148fda146c5abc
MD5 2abf4b7d722988241c03c77b1722e017
BLAKE2b-256 e219153efc05135593d9df3630891ac6b2560cda6c5ba5d5db65351de7ed1786

See more details on using hashes here.

File details

Details for the file skpmem-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: skpmem-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.1

File hashes

Hashes for skpmem-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 4c6833da2480418237668efe9b664e15b70f1a61e0c509aa7b80dbbb929543e0
MD5 5b883e421d06316f6c554ab8f7666023
BLAKE2b-256 f391680d08998f3fc05ad975fda59361fd0e729cc420de5d3ad9c123153836e5

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