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

Uploaded CPython 3.14Windows x86-64

cimba-0.5.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (398.4 kB view details)

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

cimba-0.5.2-cp314-cp314-macosx_11_0_arm64.whl (310.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cimba-0.5.2-cp313-cp313-win_amd64.whl (314.3 kB view details)

Uploaded CPython 3.13Windows x86-64

cimba-0.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (397.2 kB view details)

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

cimba-0.5.2-cp313-cp313-macosx_11_0_arm64.whl (309.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cimba-0.5.2.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.2.tar.gz
Algorithm Hash digest
SHA256 d06e656caacfab66d8f53fa0aa160573228bdccf1ff0320cafbfec7d2fb739dc
MD5 b8509fc3fd42c964d075b3766dab4a94
BLAKE2b-256 8ed332a61edf52e175f3eab97d2ceddfc6f9c4d920c3dcc1ab0d56dfcd7596b6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 320.1 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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 087ed8421329e7985d1b6ad4b7c3a3d99a3039620ef44516b910d7085bda2f92
MD5 a7e6342127955acfff9520641428177b
BLAKE2b-256 6593d48863b7839f4d3d49dc4a5f2168e2ed32ad017e1968d2df68b080f7dce1

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.2-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.2-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.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b74d3e643929dbd027edbc2efb9d0d9a30ba53a4d1af7923cd6b906494ab81f8
MD5 759653c402b9ec3b3935a0961822cfa0
BLAKE2b-256 76c5b7ef9748e95fd6ad3a5818a8a266fc4eacdd1d10bf82ab46d83970154192

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a65d3d720a494045a51ff95c458f18c873e148a3cf94652b77488c19be02b606
MD5 f5f7dfda9373c1b8e1a9d5f390aa0a4c
BLAKE2b-256 683371099848978908359426ce053b22f2685cee2d40d01f60af1922e5b1391e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 314.3 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 aad931e09fc1348d83f1d6038f21af4960f33adf2af3405823ae3f7fc1422d7f
MD5 c62e97cb02665b96d5df251572e6bd2f
BLAKE2b-256 e6245a883d3697be766ddcef63fe181e34ebd49d4d31df81523d9db7c33aeaa2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.2-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.2-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.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8d5f171b4e01396c7923ff8ff33e3c58b2a7a75583604ead8ce3341339f69252
MD5 a6b841bc8235e721f5dad14beb896a05
BLAKE2b-256 3bff7c3ea6a23aac396214e0c27e77fa7adf2f0515111acf6d4ff937b5eed6a1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99c71955fbc16e4e2e08fad47ce85ea76f940d8648486c4fc7d5bcc19485e872
MD5 29e4ab7d609209074dc94e6aecefe5d9
BLAKE2b-256 b16fc049af93c9f4990b70ec899f30fc08c9e9cc36b2eacac1a4dda5b5020b18

See more details on using hashes here.

Provenance

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

0.5.6

7 files

0.5.5

7 files

0.5.4

7 files

This release

0.5.2 This release

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