Skip to main content

Python implementation of the Actor Model inspired from tart.js.

Overview

The initial ideas for tartpy are copied from @dalnefre and @tristanls. At the beginning, the goal was to replicate tart.js in Python. Lately, it has diverged slightly, to experiment with the new Python asynchrony model introduced in version 3.4.

tartpy aims to be an actor library with the following features:

  • it implements the pure actor model (rather than the Erlang model),

  • it can be used in practical situations to express lock-free and concurrent algorithms,

  • it abstracts the network transport to allow arbitrary protocols,

  • it implements a capability based approach to isolate actors, using membranes (again, the ideas are due to @dalnefre and @tristanls). The semantics of membranes may differ between tartpy and tartjs.

Installing

Install with:

$ pip install git+https://github.com/waltermoreira/tartpy

or clone this repository and install with python3 setup.py install:

$ git clone https://github.com/waltermoreira/tartpy
$ cd tartpy
$ python3 setup.py install

Test

Run tests with:

$ python3 setup.py test

Examples

Run example with:

python3 tartpy/example.py

There is also an IPython notebook showing the basic properties of actors.

The project actor_model contains slides and IPython notebooks from a talk presented at TACC in April 17, 2014.

Erlang Challenge

Create a ring of M actors, sending N messages around the ring:

python3 tartpy/erlang_challenge.py M N

Benchmarks

For M = 100000 and N = 10:

Starting 100000 actor ring
Construction time: 1.5192079544067383 seconds
Loop times:
  0.7743091583251953 seconds
  0.7793149948120117 seconds
  0.7702958583831787 seconds
  0.7602570056915283 seconds
  0.7704610824584961 seconds
  0.779731035232544 seconds
  0.7654228210449219 seconds
  0.7625432014465332 seconds
  0.7740719318389893 seconds
  0.7699680328369141 seconds
Average: 0.7706375122070312 seconds

Metadata

Release files for tartpy 0.2.1

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

Source distribution (sdist)

Source distribution for tartpy 0.2.1
File Size Uploaded
tartpy-0.2.1.tar.gz 11.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tartpy 0.2.1
File Interpreter ABI Platform
tartpy-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 25.7 kB

Release files / tartpy-0.2.1.tar.gz

Download URL tartpy-0.2.1.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
b6341c6f7d4abe4b20facaa11b65ac23bea84c5c53b2f2301bb3db4604cdfe72
BLAKE2b-256 checksum
How to use checksums
c9725639c9dfe4fd9dd03fdf71917043fc653ba22f5752a6623c99e06e859495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / tartpy-0.2.1-py3-none-any.whl

Download URL tartpy-0.2.1-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ab471e6fd0d2b0c31c2da4c30ab432227488f2168d8c1f4c32fd89e30ede9365
BLAKE2b-256 checksum
How to use checksums
5fb963bd6320d0f56ba0837b54adaf09fe6aa961d1e49e8e044b7b6d5874259c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.1 This release

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