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

Uploaded CPython 3.14Windows x86-64

cimba-0.5.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (398.9 kB view details)

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

cimba-0.5.4-cp314-cp314-macosx_11_0_arm64.whl (310.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cimba-0.5.4-cp313-cp313-win_amd64.whl (314.7 kB view details)

Uploaded CPython 3.13Windows x86-64

cimba-0.5.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (397.6 kB view details)

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

cimba-0.5.4-cp313-cp313-macosx_11_0_arm64.whl (309.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cimba-0.5.4.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.4.tar.gz
Algorithm Hash digest
SHA256 86e4a95516a577cab2e1abc62375240df43ede9b27ea0bc7b6467e8bcb777bec
MD5 55ce125db4dbf83178ad2827a00ee432
BLAKE2b-256 4db8df5637ad9b6f0a9fb54e100fd03845fe7a99efcb61c8a04800ffeb4a0fc1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 320.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.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bd452c3a4a00f0306f2bfa3860f3c1a24f4d387f5f39b3b40035b69c4760e4ea
MD5 a16ffadba60af52268b37bf15cd2ffd9
BLAKE2b-256 757a3ffe22732613498f9ce885f85211817a234f74d76528ede2bfc7639b2040

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.4-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.4-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.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3bd2b5360f0bc6bf7204abf188d300ac1f148e5dfab8bd9947b32079cc9d1315
MD5 ca75ee6b63eda59294cb57166e1271f1
BLAKE2b-256 bfa38ecc370227e85b451b4f33e3ce8e197d2624fa59946aa3d518b93b0aab96

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6706fdaedc5cfad67dfed48bfb53c527cdc23ca06ea8cfd8f1a4451b698b831c
MD5 3b05bf894fe5daf001ce5c4c2e3f3ce9
BLAKE2b-256 129fec1666c63bee8c9d00534e69b00796a9acbd5323746051f8f63aaa0f4b96

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 314.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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b6c30bf89907afe265f75c49eeb066478d9a013c3aeaa9eb05a64478264fe503
MD5 89cc070fbb01044caab2d74754eb63c1
BLAKE2b-256 9fec90401a0839881c55e62a3d1e0bfc9a4c1c110538b88bf58c81c0fc3ffbd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.4-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.4-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.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13432312ed300c84ebd1bcaa35c6a964b29d8c75f8eb28377222c18e18c63485
MD5 cdbbd083571d30bc6915ecda22b52c84
BLAKE2b-256 a8cb43de96a1de6ca772f4fce153db536e51f979c7dad85b22a792a8b222b5c3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba62b1e50022e551b6e41a24faaf0cdd63762a7111f252d03bfbec58035b565d
MD5 34e67ba4be4dbf1902be21583751cd10
BLAKE2b-256 0f50509df74a38454fdc3f68792bf471ecc41c1474cdd9ab84ee36fefecb37a2

See more details on using hashes here.

Provenance

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

This release

0.5.4 This release

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