jgehrcke / gipc

gevent-cooperative child processes and inter-process communication
https://gehrcke.de/gipc
MIT License
83 stars 13 forks source link

Changelog <https://github.com/jgehrcke/gipc/blob/master/CHANGELOG.rst> | gipc @ PyPI <https://pypi.python.org/pypi/gipc> | gipc @ GitHub <https://github.com/jgehrcke/gipc>_

Overview

gipc enables reliable child process management and non-blocking inter-process communication in software that uses gevent <https://github.com/gevent/gevent>_.

Using Python's multiprocessing package <https://docs.python.org/3/library/multiprocessing.html> in the context of a codebase that also uses gevent is error-prone and may break the application in various subtle ways <https://gehrcke.de/gipc/#what-are-the-challenges-and-what-is-gipc-s-solution>. With gipc, multiprocessing.Process-based child processes can again safely be created in your gevent-powered application. The API of multiprocessing.Process objects is provided in a gevent-cooperative way. Also, gipc provides a pipe-based transport layer for gevent-cooperative inter-greenlet and inter-process communication. gipc is lightweight and easy to integrate.

From 2012 to 2018, gipc's home was at bitbucket.org/jgehrcke/gipc <https://bitbucket.org/jgehrcke/gipc>_. Since then development has continued on GitHub.

Code examples

Individual example programs can be found in the examples <https://github.com/jgehrcke/gipc/blob/master/examples>_ directory.

Documentation

Visit https://gehrcke.de/gipc for installation instructions, API docs, code examples, and in-depth information.

Platform support

The current version of gipc works on CPython 3.8 through 3.12. It supports gevent versions 1.5 and newer and supports both, Unix-like systems as well as Windows. On Linux and macOS, gipc also works with PyPy.

gipc's continuous integration (CI) pipeline automatically executes a wide range of tests on Linux, Darwin (macOS), and Windows.

Who uses it?

Are you using gipc in your project? Please drop me a line!

How to run the tests?

gipc's tests are written for pytest <http://pytest.org>_. With the repository's root directory being the current working directory you can run the tests like this::

$ pip install -r requirements-tests.txt
$ cd test && pytest -vv --cov-report term --cov-report html --cov gipc

Contact & help

Your feedback and questions are highly appreciated. Please contact me via mail at jgehrcke@googlemail.com or use the GitHub issue tracker <https://github.com/jgehrcke/gipc/issues>_.

Author & license

gipc is written and maintained by Jan-Philip Gehrcke <https://gehrcke.de>_. It is licensed under the MIT license (see LICENSE file).

I am thankful for all contributions (bug reports, code, great questions) from: