Overview

Direct usage of Python’s multiprocessing package in the context of a gevent-powered application is error-prone and may break the application in various subtle ways (see Challenges).

With gipc, multiprocessing.Process-based child processes can safely be created anywhere within your gevent-powered application. The API of multiprocessing.Process objects is provided in a gevent-cooperative fashion. Also, gipc provides a pipe-based transport layer for gevent-cooperative inter-greenlet and inter-process communication. gipc is lightweight and easy to integrate (see code examples, API reference).

gipc is used by, among others, Quantopian’s remote Python debugger, Ajenti, Chronology, gipcrpc, NetCall, PokeAlarm, Wishbone, and GDriveFS. Are you successfully applying gipc in your project? That is always great to hear: please drop me a line!

Platform support

The current version of gipc works on CPython 2.7/3.4/3.5/3.6/3.7. It requires gevent 1.2 or 1.3 and supports both, Unix-like systems as well as Windows. On Unix-like systems, gipc also works with PyPy2.7 and PyPy3. gipc’s test suite is automatically executed on Linux, Darwin (macOS), and Windows.

Download & installation

The latest gipc release from PyPI can be downloaded and installed via pip:

$ pip install gipc

pip can also install the current development version of gipc:

$ pip install git+https://github.com/jgehrcke/gipc

Versioning

gipc obeys semantic versioning.