Skip to main content

Ultima - intuitive parallel map() for Python

Ultima CI

What is it?

ultima is a Python package that provides a simple yet powerful interface to do map() in parallel. It uses concurrent.futures as its execution backend and can run tasks in either threads or sub-processes. It is designed to squeeze maximum performance (let those CPUs burn 🔥) with the same simple interface.

Usage examples:

Run a heavy function in sub-processes:

from ultima import Workforce

inputs = open("input_data.txt")

with Workforce() as wf:
    for result in wf.map(cpu_intensive_function, inputs):
        ...

An equivalent one-liner:

from ultima import ultimap

for result in ultimap(cpu_intensive_function, inputs):
    ...

The default backend is multiprocessing, but you can easily use threads instead:

from ultima import ultimap

for result in ultimap(io_bound_function, inputs, backend='threading', n_workers=64):
    ...

To chain an IO-intensive task with a CPU-intensive task:

from ultima import ultimap

def io_intensive(url):
    import requests
    return requests.get(url).text

def cpu_intensive(page):
    import hashlib
    return hashlib.sha1(page.encode()).hexdigest()

urls = open("urls.txt")
webpages = ultimap(io_intensive, urls, backend='threading', n_workers=64)
hashes = ultimap(cpu_intensive, webpages, backend='multiprocessing')
print(len(set(hashes)))

You can also map a function recursively:

from ultima import ultimap

def visit(graph, node, add_input):
    for child_node in graph.get_children(node):
        add_input(graph, child_node)
    return f"visited {node}"

print(list(ultimap(visit, [(graph, graph.root)], recursive=True)))

Metadata

Release files for ultima 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ultima 1.2.0
File Size Uploaded
ultima-1.2.0.tar.gz 19.1 kB Details

Release files / ultima-1.2.0.tar.gz

Download URL ultima-1.2.0.tar.gz
Size 19.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2b03b2f65c6f0d86e421eed79217f60928367bc34046487ec676f7539c8def08
BLAKE2b-256 checksum
How to use checksums
7752ac134698587cd7e638416f3ee9463088c4ce093375cfc764edf7cec762a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.13.1 Darwin/24.2.0

Release history Release notifications | RSS feed

This release

1.2.0 This release

1 release file

1.1.5

1 release file

1.1.1

1 release file

1.0.3

1 release file

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