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

Uploaded CPython 3.14Windows x86-64

cimba-0.5.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (399.0 kB view details)

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

cimba-0.5.5-cp314-cp314-macosx_11_0_arm64.whl (311.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cimba-0.5.5-cp313-cp313-win_amd64.whl (314.9 kB view details)

Uploaded CPython 3.13Windows x86-64

cimba-0.5.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (397.8 kB view details)

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

cimba-0.5.5-cp313-cp313-macosx_11_0_arm64.whl (310.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cimba-0.5.5.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.5.tar.gz
Algorithm Hash digest
SHA256 ba226a9e30c48be799dab7c64120393ad0984a29c6547a283b870711f2a2fda3
MD5 e423b4510a6f83dfbabdbdb3a3bf96ce
BLAKE2b-256 a81287a95328a375df179bc19f87d08ff0bf67087e69540eb97564f43e7eaaf3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 320.6 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.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4c691e21e0f4b2089623fbb3a8513419339571002a02e334e76656fa3aff5359
MD5 58d401b53a6be155d3367647c639bd3f
BLAKE2b-256 342f5ff0d173899848caa58ef64cd5dade098bc3464bde98d671e24754332751

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.5-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.5-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.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b85813888bc5ce29497dddd097a1b3f4421fa02fc689406a006db04180220263
MD5 3db88e01890633b8058d0fa0428308f3
BLAKE2b-256 e6d3e50c0fcbc71d670cae748f623cb3eba8de35ef654e1b007caf58f9a8df37

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7b71d7df5bfb6ae26489bf1119c352e29d07272e54b5bd368928576d9d57f4a
MD5 021c3dce180aa51137c6f76c192a75de
BLAKE2b-256 485f2decce0a336fc3c6662a8b2fd63d0718032a3fe1a5c007e8440282989bb2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 314.9 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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5cad7cd8b649b3f408cbfda8842198963936ddc47b7573c144db45b397725fa4
MD5 f76962a88a33df17115226683d58100d
BLAKE2b-256 cfce336f1fd6b66de4491be40b0bded558bcb7aae2d1b3836830d93fe12f98bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.5-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.5-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.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 060d4db68148e12e249806264b80c39ec7e19739680658f24273b34e004c1c94
MD5 49edff74e6bdf436d63c4bf2d1883da7
BLAKE2b-256 d9613342d7f3cbf6ae83ec0cd01f4afdf772f0b8a9ad1cbddfca4a87254f45ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be81164b5bac77a4470a11a75c6d0dee5fe22f0359eae1d0ee5ec7f72ca54120
MD5 126f7eac4c13360e333feb8d2b33b4fb
BLAKE2b-256 924b9baf1f78a17bb0be240fcce005f33a4e18e54aed098b2ce59eb501d365b8

See more details on using hashes here.

Provenance

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

This release

0.5.5 This release

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