ericsnowcurrently / multi-core-python

Enabling CPython multi-core parallelism via subinterpreters.
BSD 3-Clause "New" or "Revised" License
245 stars 6 forks source link

multi-core-python

Enabling CPython multi-core parallelism via subinterpreters.

This repo is for tracking the effort and as a place to keep any tooling.

wiki | projects

Project Summary

From my python-ideas post (June 2015):

Python's multi-core story is murky at best.  Not only can we be more
clear on the matter, we can improve Python's support.  The result of any
effort must make multi-core (and concurrency) support in Python obvious,
unmistakable, and undeniable (and keep it Pythonic).

The goal of this project is to do just that, by using the existing subinterpreter C-API.

Solution

The minimal multi-core solution will involve:

Once a minimal solution is in place we can expand from there.

At a high level, we're doing the following concrete tasks:

Constraints / Requirements

  1. no significant impact on single-threaded performance
  2. maintain backward compatibility (C-API, etc.)
  3. (pseudo-)compatibility with multiprocessing/threading/concurrent.futures APIs
  4. a multi-core concurrency model/approach that fits our brains
  5. Python APIs
  6. supportable on other Python implementations

Status

Key Collaborators

This project wouldn't be what it is without the help of these great people:

Contributing

There are many ways to contribute to this project. Aside from the main technical work in the CPython runtime, there are also a number of jobs that need to be done that are less expert-related and even (somewhat) non-technical. All of it is important and anyone interested in helping is welcome!

Keep in mind that this project/repo is actually just a tool to organize the effort. The actual work is done on bugs.python.org, github.com/python/cpython, and the python-dev mailing list.

Also note that contacting @ericsnowcurrently directly is fine, but you might get a faster response through those other channels or through the issue tracker here. :)

For more information see the wiki page.