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.6.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.6-cp314-cp314-win_amd64.whl (321.5 kB view details)

Uploaded CPython 3.14Windows x86-64

cimba-0.5.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (399.9 kB view details)

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

cimba-0.5.6-cp314-cp314-macosx_11_0_arm64.whl (311.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cimba-0.5.6-cp313-cp313-win_amd64.whl (315.8 kB view details)

Uploaded CPython 3.13Windows x86-64

cimba-0.5.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (398.7 kB view details)

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

cimba-0.5.6-cp313-cp313-macosx_11_0_arm64.whl (310.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cimba-0.5.6.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.6.tar.gz
Algorithm Hash digest
SHA256 b968ab4d81b1a736c17a884465ac3f2368adaac9e70fad9f385feb277a910fa2
MD5 c0c793b8c0737f266b44e6c6328beb72
BLAKE2b-256 6bde4f263ee7d79d918dcebc5d5436c7a7032224272fcca872e04d72ed914dcb

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.6.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.6-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cimba-0.5.6-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 321.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.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bd5edf148433aea12922b94a68888a3f1b2af5e3f22d2903188fed92755386d3
MD5 ea88fe916149edd1b924d26254c15643
BLAKE2b-256 8d3897883678119a3c525a1fdcbd9186a396bee8d596330a6d9ced80fd7fcfc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.6-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.6-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.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 11af8efaee4d9f4c3f706da6dd389dbc97f6ea10824a5400f934fc0a12815db7
MD5 24daf3026fbaa9a50f1b11f1f9a9cba3
BLAKE2b-256 49a4a039f5e64557a64477b74ba8c2b4478c7f0355431ebe3a947f920d0666ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.6-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.6-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cimba-0.5.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1927f92a9610148e256e38849ecec281fd8c4452079fe8d636820d83a926a33e
MD5 163a1bea41b2a1ee36706e9dc3f3c4c5
BLAKE2b-256 628181695ef9300d0aff1334631ac22f64fc4b461ddc31a57d6ec0e138028392

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.6-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.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cimba-0.5.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 315.8 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.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f0980e7ca9cc2b4d237e0b0ffaa587e7e75deac90f450cb4875a33df28455b64
MD5 0db1aa176bf5465258c4482da068639d
BLAKE2b-256 b642a5079f5336a1277ad7067e0fe5596ae6e5ed591817d991ee81bbca69987a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.6-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.6-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.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 918fdb99a8b002919eeac727cf647c0e6909a9b06291f9598a8ebe3898bef5bc
MD5 aa155080077e99a2d1b4224ac9ca3b5e
BLAKE2b-256 25528dcfde2fee81fb73db8a573666af5901b04bb80cc607d1f1ff07e17226a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.6-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.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cimba-0.5.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 579975384cf63d6aa812b749d25d147cff0f7f6fb6ec7c9da1ce8f9641907dc0
MD5 a584e63366dfb361b54bf56d9015fa18
BLAKE2b-256 f0c2a589d65c13d7d81a26b9ff983d2881d915d0a47779efbbb354835f8c2ac7

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.6-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

0.5.8

7 files

0.5.7

7 files

This release

0.5.6 This release

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