Skip to content
This repository

Lightweight in-process concurrent programming

branch: master
Octocat-spinner-32 benchmarks pep8/cleanup whitespace in all .py files January 27, 2012
Octocat-spinner-32 doc Updated version in doc. December 05, 2012
Octocat-spinner-32 platform Merge pr41: use FLUSHW on sparc January 14, 2014
Octocat-spinner-32 tests test_gc: move test_circular_greenlet under GREENLET_USE_GC February 21, 2014
Octocat-spinner-32 .gitignore ignore MANIFEST and .ropeproject January 27, 2012
Octocat-spinner-32 .travis.yml test with 3.2 and 3.3 on travis-ci January 07, 2014
Octocat-spinner-32 AUTHORS add Giel van Schijndel January 14, 2014
Octocat-spinner-32 LICENSE add copyright holders December 22, 2011
Octocat-spinner-32 LICENSE.PSF Attempt to clarify greenlet license September 01, 2011
Octocat-spinner-32 MANIFEST.in update make-manifest and MANIFEST.in January 07, 2014
Octocat-spinner-32 NEWS add m68k support to NEWS January 07, 2014
Octocat-spinner-32 README.rst get rid of development version install instructions January 18, 2014
Octocat-spinner-32 conftest.py add conftest.py for use with py.test January 27, 2012
Octocat-spinner-32 greenlet.c green_dealloc: cast to PyObject * in PyObject_IS_GC February 21, 2014
Octocat-spinner-32 greenlet.h prepare 0.4.2 December 30, 2013
Octocat-spinner-32 make-manifest update make-manifest and MANIFEST.in January 07, 2014
Octocat-spinner-32 make-win-release use explicit list of python versions and distutils commands to build January 07, 2014
Octocat-spinner-32 my_build_ext.py simplify my_build_ext and make it work for non top-level extensions January 19, 2012
Octocat-spinner-32 run-tests.py exit with non-zero status when we have failures January 07, 2014
Octocat-spinner-32 setup.cfg make sure sdist always creates a zip file December 14, 2011
Octocat-spinner-32 setup.py twine allows me to get rid of fixup subcommand January 08, 2014
Octocat-spinner-32 setup_switch_x64_masm.cmd make the greenlet module work on x64 windows December 18, 2011
Octocat-spinner-32 slp_platformselect.h Add support for m68k January 06, 2014
Octocat-spinner-32 tox.ini add testenv:docs, which tests "make html" in doc directory January 27, 2012
README.rst
https://secure.travis-ci.org/python-greenlet/greenlet.png

The greenlet package is a spin-off of Stackless, a version of CPython that supports micro-threads called "tasklets". Tasklets run pseudo-concurrently (typically in a single or a few OS-level threads) and are synchronized with data exchanges on "channels".

A "greenlet", on the other hand, is a still more primitive notion of micro-thread with no implicit scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. You can build custom scheduled micro-threads on top of greenlet; however, it seems that greenlets are useful on their own as a way to make advanced control flow structures. For example, we can recreate generators; the difference with Python's own generators is that our generators can call nested functions and the nested functions can yield values too. Additionally, you don't need a "yield" keyword. See the example in tests/test_generator.py.

Greenlets are provided as a C extension module for the regular unmodified interpreter.

Greenlets are lightweight coroutines for in-process concurrent programming.

Who is using Greenlet?

There are several libraries that use Greenlet as a more flexible alternative to Python's built in coroutine support:

Getting Greenlet

The easiest way to get Greenlet is to install it with pip or easy_install:

pip install greenlet
easy_install greenlet

Source code archives and windows installers are available on the python package index at https://pypi.python.org/pypi/greenlet

The source code repository is hosted on github: https://github.com/python-greenlet/greenlet

Documentation is available on readthedocs.org: https://greenlet.readthedocs.org

Something went wrong with that request. Please try again.