Skip to main content

Cimba logo

Cimba Python

Fast discrete event simulation for Python

Cimba Python is a Python interface to Cimba, a multithreaded discrete event simulation engine written in C and assembly.

It is designed for Python simulation models that need more speed than pure Python event scheduling can usually provide. In the included M/M/1 benchmark, Cimba Python runs about 27-33x faster than SimPy after its one-time Numba compile, while keeping model code in Python.

On an AMD Ryzen 7 9700X under WSL Ubuntu 24.04, averaged over 10 runs:

Benchmark SimPy Cimba Python Cimba C
Single core, single trial 2.612 s 0.096 s 0.083 s
Multicore, 100 trials 36.807 s 1.131 s 0.970 s

The benchmark data and charts are in benchmark/AMD_Ryzen_7_9700X_WSL.ods.

Install

pip install cimba

or with uv:

uv add cimba

Python 3.13 or newer is required. The Linux, Windows, and macOS wheels embed the Cimba C library, so you do not need to install Cimba separately. Native macOS wheels are available for Apple Silicon. Numba does not currently publish the required llvmlite wheels for Intel Macs.

What is it?

Cimba Python gives Python models access to Cimba's native simulation engine through the cimba.sim API: processes, event queues, buffers, queues, stores, priority queues, resources, resource pools, conditions, timers, events, logging helpers, and experiment tables. Random distributions live in cimba.random.

What does the code look like?

import cimba.sim as sim
import cimba.random as random


class MM1(sim.Model):
    utilization: sim.Param
    avg_queue_length: sim.Output
    queue: sim.Queue


model = MM1("MM1")


@model.process
def arrival(env: MM1):
    while True:
        sim.hold(random.exponential(1.0 / env.utilization))
        env.queue.put(1)


@model.process
def service(env: MM1):
    while True:
        env.queue.get(1)
        sim.hold(random.exponential(1.0))


@model.collect
def collect_stats(env: MM1):
    env.avg_queue_length = env.queue.mean_level()


exp = model.experiment(
    utilization=0.75,
    replications=100,
    duration=1000.0,
    warmup=100.0,
    seed=123,
)
exp.run()

print(exp["avg_queue_length"].mean())

More examples, tutorials, background notes, and the API reference are in the documentation.

Development

From a fresh clone:

uv sync
uv run pytest

License

Cimba Python is licensed under Apache-2.0. See LICENSE and NOTICE.

The bundled Cimba C library is also Apache-2.0 licensed. See subprojects/cimba/NOTICE for attribution.

Download files

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

Source Distribution

cimba-0.5.8.tar.gz (7.5 MB view details)

Uploaded Source

Built Distributions

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

cimba-0.5.8-cp314-cp314-win_amd64.whl (322.5 kB view details)

Uploaded CPython 3.14Windows x86-64

cimba-0.5.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (400.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cimba-0.5.8-cp314-cp314-macosx_11_0_arm64.whl (312.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cimba-0.5.8-cp313-cp313-win_amd64.whl (316.7 kB view details)

Uploaded CPython 3.13Windows x86-64

cimba-0.5.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (399.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cimba-0.5.8-cp313-cp313-macosx_11_0_arm64.whl (311.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

Details for the file cimba-0.5.8.tar.gz.

File metadata

  • Download URL: cimba-0.5.8.tar.gz
  • Upload date:
  • Size: 7.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cimba-0.5.8.tar.gz
Algorithm Hash digest
SHA256 dfc464365ca1a4cfb8617b49cc0709723ec57c97a5b40a830e2139bde4646ea6
MD5 71157b22fb8112d844cb48d72a2d2f88
BLAKE2b-256 a6e271c3a71c0bd05161fecfcc594a736f83076205e05b94d024e193e2cc9075

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.8.tar.gz:

Publisher: release.yml on FBarrca/cimba_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cimba-0.5.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cimba-0.5.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 322.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cimba-0.5.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c09c172876b8a0ce8658c809f7a2252fc4938980f691282334341e9d6b5e241d
MD5 6be703f14fd2f7e2001178708c5beeb6
BLAKE2b-256 63b107cace23184df21c88a9ce749160aa899d796ffc1257221508ceff3a0150

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.8-cp314-cp314-win_amd64.whl:

Publisher: release.yml on FBarrca/cimba_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cimba-0.5.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cimba-0.5.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 046d35708eacafc2568e321f7cf1bd992e3eefc84e6565adfb072a8ece765a22
MD5 3ecd279e792d191943266a62c0afddac
BLAKE2b-256 71ddfaa13d06b2aa6276b6aa885c5ebc4159a7a016ef3e4fbae24232acf2b3d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on FBarrca/cimba_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cimba-0.5.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cimba-0.5.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6f2dec15b4afd6190da181a57fd484cd4f914240b926d8675c562115cd4dce29
MD5 f71071ad8fb0473178a1d8b36c352ead
BLAKE2b-256 7e125d7292c56701d227275d363499f14b95a6287784267bc11c4f5a8c5385a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.8-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on FBarrca/cimba_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cimba-0.5.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cimba-0.5.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 316.7 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cimba-0.5.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 42020dd0a31ea8166ee06ac04ac5297dec80fd4c378e54a39dffa2e8e32d2635
MD5 260cd7131d51b383b967f8ae56cdaebb
BLAKE2b-256 b0826854a97fdf748da899567034d0e0abd33051478295fc721cf48b16aff8e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.8-cp313-cp313-win_amd64.whl:

Publisher: release.yml on FBarrca/cimba_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cimba-0.5.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cimba-0.5.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60456bf5292cdca41dbaf82f5e78f504e65e7f5977673640f4a2ef37e4386ef3
MD5 9bb6ceddae2d8af83536c878e0a99f5e
BLAKE2b-256 04ee17c9dedb06e2f51393cb9daafb9fa7e049d226f3810524307688bb622a1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on FBarrca/cimba_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cimba-0.5.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cimba-0.5.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22a94b133eed3a6f2dbf4c5aef7c75b038d7ec56cfdda5c710a99e2bf20b4cf1
MD5 064e985880e4c20b74713d74b9db1a23
BLAKE2b-256 3098a6188522305f3710b7838a2b49ad14c22abe323af4cb6347cf0ce7eefbdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.8-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on FBarrca/cimba_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.6.1

7 files

0.6.0

7 files

0.5.9

7 files

This release

0.5.8 This release

7 files

0.5.7

7 files

0.5.6

7 files

0.5.5

7 files

0.5.4

7 files

0.5.2

7 files

0.5.1

7 files

0.5.0

7 files

0.4.1

7 files

0.4.0

3 files

0.3.0

3 files

0.2.1

5 files

0.1.0

2 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