Intuitive parallel map calls for Python
Project description
Ultima - intuitive parallel map() for Python
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)))
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ultima-1.2.0.tar.gz.
File metadata
- Download URL: ultima-1.2.0.tar.gz
- Upload date:
- Size: 19.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.13.1 Darwin/24.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b03b2f65c6f0d86e421eed79217f60928367bc34046487ec676f7539c8def08
|
|
| MD5 |
3f436f2a7bf643d1acc6d6eae0918ab4
|
|
| BLAKE2b-256 |
7752ac134698587cd7e638416f3ee9463088c4ce093375cfc764edf7cec762a1
|