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

Uploaded CPython 3.14Windows x86-64

cimba-0.5.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (398.3 kB view details)

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

cimba-0.5.1-cp314-cp314-macosx_11_0_arm64.whl (310.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cimba-0.5.1-cp313-cp313-win_amd64.whl (314.2 kB view details)

Uploaded CPython 3.13Windows x86-64

cimba-0.5.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (397.1 kB view details)

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

cimba-0.5.1-cp313-cp313-macosx_11_0_arm64.whl (309.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cimba-0.5.1.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.1.tar.gz
Algorithm Hash digest
SHA256 70b4006f76c1657b6a1131210a7895df3100d568f6a3cf7c514273abfc2f998a
MD5 ddddb4056add112c3e2ce2b396308d5e
BLAKE2b-256 f264e9233ad454ea803d8b5e261f67b542e9794d7909d1657fedb2ab1cfa0c57

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 320.0 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 80ab1b2d7692ec9c255e26eceb14f65906563ea89ad54da8a7559c58e977f447
MD5 2b676a7ee39f0a916ec68c3d28524317
BLAKE2b-256 b8499f2ac76ae009336647de91f6578d2e51a01ad7002ce06168e7cc0dc8cd2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.1-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.1-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.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 37761cb5687983c4dac4235196481d414baaf54377f4417919f7fddc93e88960
MD5 5e0862fb4f5a8a1a796bc912734d43df
BLAKE2b-256 da16251bfdeb732297be06107b8972dd60ac6d1d47664ed554d7db9d675a6e48

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e1df32a36741bcb9be64e71cb74f335929e808497610198acd2832a6d092a9e
MD5 e75c786a180cb6a7c0680690092b2334
BLAKE2b-256 3d2927c9d58e1083c6e34502ac4b39fd46b541c8535a0ad3262d3349725934e9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 314.2 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e34080dc4962716175174b1ffb11a9afdbe4aeb19974273cbd1d8b34421bd31e
MD5 28a6c608b74e4481b2d556daf5622125
BLAKE2b-256 15651e7acfe83896b702c80f952cfd28ebbb4629c6f67fe8136f94ad0f72fb46

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.1-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.1-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.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e926c0b065e604e9f91d3b7835b84c2939f2103b5d46463b9e9d15215c0ee2df
MD5 35e0280ea7ba06d5afd8790253ef8005
BLAKE2b-256 32e175c9ec8ec6cf62815fe6613cdd26f490ccd451748642d64f20581255ae89

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6f487aeb9b59d2fb965286572da2e611af0d306b72f72a216c796421df47e25b
MD5 55aba85b8cb7cb28251cf34cd7e770f1
BLAKE2b-256 5d6be64a7bf12234f976911699a90b545a6e7020b5f9b903769dff184540429a

See more details on using hashes here.

Provenance

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

0.5.2

7 files

This release

0.5.1 This release

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