Skip to main content

Lazy object proxy interface for distributed stores.

Project description

ProxyStore

docs tests pre-commit.ci status

ProxyStore provides pass-by-reference semantics for distributed Python applications through transparent object proxies. Moving data via proxies (1) decouples control flow from data flow, (2) enables producers to unilaterally (i.e., without the agreement of or awareness by the consumer) choose the best storage and communication channel for the data, and (3) perform just-in-time data movement directly between producer and consumer.

ProxyStore's goals are to:

  • Improve productivity. ProxyStore enables easy decoupling of communication from the rest of the code, allowing developers to focus on functionality and performance.
  • Improve compatibility. Consumers of data can be agnostic to the communication method because object proxies handle the communication behind the scenes.
  • Improve performance. Transport methods and object stores can be changed at runtime to optimal choices for the given data without the consumers being aware of the change.

ProxyStore provides support for many third-party mediated communication methods out-of-the-box including Globus Transfer, KeyDB, and Redis. Custom communication methods built on Mochi, UCX, WebRTC, and ZeroMQ are provided for high-performance and multi-site applications.

Read more about ProxyStore's concepts here. Complete documentation for ProxyStore is available at docs.proxystore.dev.

Installation

$ pip install proxystore
$ pip install proxystore[all]

See the Installation guide for more information about the available extra install options. For local development, see the Contributing guide.

Additional features are available in the proxystore-extensions package.

Example

Getting started with ProxyStore requires a few lines of code.

from proxystore.connectors.redis import RedisConnector
from proxystore.proxy import Proxy
from proxystore.store import register_store
from proxystore.store import Store

store = Store('my-store', RedisConnector('localhost', 6379))

# Store the object and get a proxy. The proxy acts
# like a reference to the object.
data = MyDataType(...)
proxy = store.proxy(data)
assert isinstance(proxy, Proxy)

def my_function(x: MyDataType) -> ...:
    # x is resolved my-store on first use transparently to the
    # function. Then x behaves as an instance of MyDataType.
    assert isinstance(x, MyDataType)

my_function(proxy)  # Succeeds

Check out the Get Started guide to learn more!

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

proxystore-0.5.0.tar.gz (353.8 kB view details)

Uploaded Source

Built Distribution

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

proxystore-0.5.0-py3-none-any.whl (107.3 kB view details)

Uploaded Python 3

File details

Details for the file proxystore-0.5.0.tar.gz.

File metadata

  • Download URL: proxystore-0.5.0.tar.gz
  • Upload date:
  • Size: 353.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for proxystore-0.5.0.tar.gz
Algorithm Hash digest
SHA256 fd9c47e5458b8a22fc0c17d342f452880460e5a7760484d7488597d2bc5d2b17
MD5 56a9b71570ac8359e1c582f329299f42
BLAKE2b-256 35449a63b9b646dec3f2bd465dde238c51f43d1d5fc0d3494335c9073e6383c1

See more details on using hashes here.

File details

Details for the file proxystore-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: proxystore-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 107.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for proxystore-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ec0156c563937290c2c9d9b5e9fb866787f0475f1d8c4f0521125d3a43bc453
MD5 28074b21b51c718a2cef76dabf453e02
BLAKE2b-256 8e9f099c436148611080ae110b9221a5cf8ba4ccef6f8055b9896c4df907cbb1

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