Skip to main content

Script to run command line programs in parallel

Project description

PAPPLY

Python wrapper to execute command line programs in parallel using multiprocessing.Pool

Description

A very simple wrapper around python's multiprocessing to be able to easily execute command line programs in parallel. It's implementation is inspired by GNU Parallel and Apply.

The basic idea is that one does not have to change much to the original command line to run tasks in parallel.

The first argument is interpreted as the command to execute multiple times, all other arguments are used as the inputs to the command.

Example usage

hello world: papply echo "Hello World" "Hello Papply"

compressing files with GNU gzip:

gzip *.txt

becomes:

papply gzip *.txt

converting images to jpg using ImageMagick's convert:

convert 1.png 1.jpg, convert 2.png 2.jpg, convert 2.png 2.jpg, ...

becomes:

papply "convert %F %f.jpg" *.png

Features

Template replacements

The following strings can appear in the command string (the first argument to papply). They will be replaced by:

  • %F: Full original input
  • %d: directory name (no trailing slash)
  • %f: file name with extension
  • %n: file name without extension
  • %e: extension (with leading .)
  • %z: empty string

Configuration

The basic configuration should work for most use-cases. I have not implemented command line options to papply itself on purpose. This is a choice to keep the interface as simple as possible.

If you want to override the default values you can create a papply.ini file. This file will be looked for first in the directory where you execute the command and second in your home directory. The following parameters can be changed:

  • num_cores: number of cores to use, default all available cores
  • overcommit_factor: how many threads per core to request, default 1
  • show_progress: print progress of the running jobs (yes, no, IfLong), default show progress if running a long time
  • long_duration: time in seconds to be considered long after which progress is shown, default 60

Any values that are not set explicitly will default to the standard value. There is an example ini file included in the distribution (papply.ini.example).

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

papply-0.1.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

papply-0.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file papply-0.1.tar.gz.

File metadata

  • Download URL: papply-0.1.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.0

File hashes

Hashes for papply-0.1.tar.gz
Algorithm Hash digest
SHA256 710290f22550a9edd564504299c17081203c40b1525052cd713ee4dd185455f1
MD5 2655a89a4f818daa6887295afe7fb04a
BLAKE2b-256 236a20085fc026a22612f31d4793c958b963ed6e397313014cc3078987cd03a9

See more details on using hashes here.

File details

Details for the file papply-0.1-py3-none-any.whl.

File metadata

  • Download URL: papply-0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.0

File hashes

Hashes for papply-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f4c3607cf4238a291e05341e45ec4b3f5dd788827462a3893eabaae1aee0b2f7
MD5 3a6323fe51adad0fb3f3ccc3604b5af2
BLAKE2b-256 d3bba04e51f3b5272d373c68679e5456b5f2016e9b2303ab571e85867d20854c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page