Skip to main content
https://img.shields.io/pypi/v/paraproc.svg https://img.shields.io/badge/license-MIT-green.svg

Overview

Paraproc is a simple library that helps you easily parallelize your computation (over independent chunks of data) across multiple processes in Python, especially when you want to mix callings to external command line programs and hand brew Python functions together in your data processing pipeline.

Under the hood, it combines subprocess and multiprocessing, and uses a process pool to schedule the jobs. It also provides a numpy.ndarray interface to access shared-memory across multiple processes.

Paraproc supports both Python 2 and 3, with numpy as the only external dependency. It is contained in only one Python file, so it can be easily copied into your project. (The copyright and license notice must be retained.)

Code snippets that demonstrate the basic usage of the library can be found later in this documentation, and in the demo_*.py files.

Bugs can be reported to https://github.com/herrlich10/paraproc. The code can also be found there.

Quick starts

Execute commands in parallel

You can run both Python codes and command line programs in parallel:

import os
import paraproc
def my_job():
    print(os.getpid())

pc = paraproc.PooledCaller()
for k in range(5):
    pc.check_call(my_job)
for k in range(5):
    pc.check_call('echo $$', shell=True) # For linux/mac
pc.wait()

The pc.check_call() method will return immediatedly. The actual execution of the queued commands are delayed until you call pc.wait().

Use shared-memory

You can load large data in shared-memory, and read or write them as a normal numpy array from multiple processes:

import numpy as np
import paraproc
def slow_operation(k, x):
    x.acquire()
    x[:100000,:] += 1 # Write access
    res = np.mean(x) # Read access
    x.release()
    print('#{0}: mean = {1}'.format(k, res))

a = paraproc.SharedMemoryArray.from_array(np.random.rand(1000000,500)) # About 4 GB
pc = paraproc.PooledCaller()
for k in range(pc.pool_size):
    pc.check_call(slow_operation, k, a)
pc.wait()

The data in a is shared in memory across all children processes and never copied even with write accesses.

Metadata

Release files for paraproc 0.1.3

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

Source distribution (sdist)

Source distribution for paraproc 0.1.3
File Size Uploaded
paraproc-0.1.3.tar.gz 6.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for paraproc 0.1.3
File Interpreter ABI Platform
paraproc-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 12.7 kB

Release files / paraproc-0.1.3.tar.gz

Download URL paraproc-0.1.3.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0687cc1cf9a14dc58229c51941b51c0bb494193b493b451e59dcd5e6e33d8650
BLAKE2b-256 checksum
How to use checksums
a495d95b1cf999c7493fc241df974864ef5c11f3f67de4f5e20274d4a2d19b86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / paraproc-0.1.3-py3-none-any.whl

Download URL paraproc-0.1.3-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0537b804047a72eb6ac30f254a67bd78151d6c93b8428bc427aca9cb3833f49c
BLAKE2b-256 checksum
How to use checksums
5e31c6b9e7f406ed04457f6591e0f5ace88de2d16c52b536633a465fbac13582
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release 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