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

Uploaded CPython 3.14Windows x86-64

cimba-0.5.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (400.8 kB view details)

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

cimba-0.5.7-cp314-cp314-macosx_11_0_arm64.whl (312.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cimba-0.5.7-cp313-cp313-win_amd64.whl (316.6 kB view details)

Uploaded CPython 3.13Windows x86-64

cimba-0.5.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (399.5 kB view details)

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

cimba-0.5.7-cp313-cp313-macosx_11_0_arm64.whl (311.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cimba-0.5.7.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.7.tar.gz
Algorithm Hash digest
SHA256 4558dec31bf13123e39724151ec511e48268449503e42947229a8bdf5154254b
MD5 4cdbff58443cc18c92ca76b8d51ba354
BLAKE2b-256 5fa147d01b85df4c609ce80d450edd0f2ca61c3840fc710c806d86e68913823c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.7-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 322.4 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.7-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 468db27a67685b22aa0d30c60ab64239f3fd79bc136e722201ce3a6ec1248c4e
MD5 8e932a1f514c27de46c435ce927dfd8f
BLAKE2b-256 e19c9dcd5b63cb1301e4a1b4b786e70d4ae3d40ea8150d595493a7f375549a14

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.7-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.7-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.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e1e10f2f114acf3f5446d0a075a98fd98825eab351ebabe0d8b85d35b5dfdd48
MD5 a8f545e9c526b35283e1471ad85d5f44
BLAKE2b-256 06f5a7d565939796621626c10ce3a49a8ee018eda62bd30e3055a6d78130c0e9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0999c465070ebea54567f945b2538eb778d4e1297d5a416b80b60ef63f8e170a
MD5 78330137a92d02ebaaf452493e205bfe
BLAKE2b-256 980bc9e3ed0591900cadc0fec9a3018dcf3ea8788e71e8ae2272414e9946d21b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cimba-0.5.7-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 316.6 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.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9077b75a3c3398d97a39054592ecf1e15992749b5fb399f000ceacd64461cd32
MD5 abfd93d703fe9fc80844ce2ae84d452f
BLAKE2b-256 3874868c9b8dce8919e22f7b6b88d4c1b6fec6f15b0a0424eab7e1dd0ccf7967

See more details on using hashes here.

Provenance

The following attestation bundles were made for cimba-0.5.7-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.7-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.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3975903eb176308dc45b3de42d52dd097d8c56cd34a4d25965f0279795c611e7
MD5 439ab8145d50f16109ed00d465a553c1
BLAKE2b-256 1fcf6a1a72ab096918a5bc4d7d411e217ec05464c37e4c519551beb84c8b1232

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cimba-0.5.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ea29df280448b4ffdd9f2276630bd68933d9d2dae4f57aedb7252f94e802356
MD5 3486f105a118d6b5467572c89ce28a95
BLAKE2b-256 6b5742f38b3039a1f9a3e1793cb71dcd2c4b20b0efe74d85c5e4e1e1da4684c9

See more details on using hashes here.

Provenance

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

This release

0.5.7 This release

7 files

0.5.6

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