Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/python-greenlet/greenlet
Lightweight in-process concurrent programming
https://github.com/python-greenlet/greenlet
Last synced: 5 days ago
JSON representation
Lightweight in-process concurrent programming
- Host: GitHub
- URL: https://github.com/python-greenlet/greenlet
- Owner: python-greenlet
- License: other
- Created: 2011-12-17T21:12:01.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2024-12-02T10:33:09.000Z (19 days ago)
- Last Synced: 2024-12-15T01:32:17.091Z (7 days ago)
- Language: C++
- Homepage:
- Size: 1.71 MB
- Stars: 1,654
- Watchers: 54
- Forks: 248
- Open Issues: 21
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
- best-of-python - GitHub - 12% open · ⏱️ 21.12.2023): (Asynchronous Programming)
- awesome-list - Greenlets - Lightweight in-process concurrent programming. (Process, Thread & Coroutine / C++/C Toolkit)
README
.. This file is included into docs/history.rst
Greenlets are lightweight coroutines for in-process concurrent
programming.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 `test_generator.py
`_).Greenlets are provided as a C extension module for the regular unmodified
interpreter... _`Stackless`: http://www.stackless.com
Who is using Greenlet?
======================There are several libraries that use Greenlet as a more flexible
alternative to Python's built in coroutine support:- `Concurrence`_
- `Eventlet`_
- `Gevent`_.. _Concurrence: http://opensource.hyves.org/concurrence/
.. _Eventlet: http://eventlet.net/
.. _Gevent: http://www.gevent.org/Getting Greenlet
================The easiest way to get Greenlet is to install it with pip::
pip install greenlet
Source code archives and binary distributions are available on the
python package index at https://pypi.org/project/greenletThe source code repository is hosted on github:
https://github.com/python-greenlet/greenletDocumentation is available on readthedocs.org:
https://greenlet.readthedocs.io