Lightweight in-process concurrent programming
Project description
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-hypernode.com/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.io
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for greenlet-0.4.14-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe85bf7adb26eb47ad53a1bae5d35a28df16b2b93b89042a3a28746617a4738d |
|
MD5 | 32c757b1b0f4953e17a6ff4e7a49fc54 |
|
BLAKE2b-256 | 10bb74e8baffb84ee3dcf1e7a0c484287158fe72b30b3749ed4c20bfafbbd206 |
Hashes for greenlet-0.4.14-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35021d9fecea53b21e4defec0ff3ad69a8e2b75aca1ceddd444a5ba71216547e |
|
MD5 | 5e040245612df78272723a8f67341faf |
|
BLAKE2b-256 | 8fe59c526eb70ce23d75ab65fa1e9ccfdd4f1c3acf81e79aa9177dd993716d1d |
Hashes for greenlet-0.4.14-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58217698193fb94f3e6ff57eed0ae20381a8d06c2bc10151f76c06bb449a3a19 |
|
MD5 | ad380e0540f03fad6990a61423ce8cc3 |
|
BLAKE2b-256 | e9954c9d2be16c124cb8e1b19b1b5c9811b5e43c3a60d2f4355e42d30813bda4 |
Hashes for greenlet-0.4.14-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe3001b6a4f3f3582a865b9e5081cc548b973ec20320f297f5e2d46860e9c703 |
|
MD5 | 3147daef7fccd96a6c291b764efe2f8d |
|
BLAKE2b-256 | a2a5c60cc53eca98a436d1323063edf0cbf5c2485e94a08a97d2915729d6a366 |
Hashes for greenlet-0.4.14-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71fbee1f7ef3fb42efa3761a8faefc796e7e425f528de536cfb4c9de03bde885 |
|
MD5 | c22b3467c774d32ce40b3a448ba7ac25 |
|
BLAKE2b-256 | 27837805e075ca410a840ee5cef2b77adf2e696dad1f8f7698ee623c681e95c9 |
Hashes for greenlet-0.4.14-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | deeda2769a52db840efe5bf7bdf7cefa0ae17b43a844a3259d39fb9465c8b008 |
|
MD5 | ca89276ff973a6d316ba4ce567b89884 |
|
BLAKE2b-256 | de7bcb662640540725deb0627264f6b890ee2b7725848b8cbca49e27bf3273c6 |
Hashes for greenlet-0.4.14-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f45adbbb69281845981bb4e0a4efb8a405f10f3cd6c349cb4a5db3357c6bf93 |
|
MD5 | 0faeaf718d20243cbb19e1e48b259637 |
|
BLAKE2b-256 | 7271d609cbebebefc69e43148db76822cbaaf5de545beb39b88c3a2ca5ecc04e |
Hashes for greenlet-0.4.14-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b843c9ef6aed54a2649887f55959da0031595ccfaf7e7a0ba7aa681ffeaa0aa1 |
|
MD5 | f16d4e9fd18a8088939743fcdcf77161 |
|
BLAKE2b-256 | 79d5dfd40e99fc2ccd1256cba13d06d5a3c6bea9bbeb4cd5d03f70356fdbf2e0 |
Hashes for greenlet-0.4.14-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8db93045414980dbada8908d49dbbc0aa134277da3ff613b3e548cb275bdd37 |
|
MD5 | 9017b551fabefeb2934c964e2cdfd73d |
|
BLAKE2b-256 | e0693cd1d75ccf1e38f9cd701833daecd3c5ac5de949653b559cee735e4ad4cd |
Hashes for greenlet-0.4.14-cp34-cp34m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e66f8b09eec1afdcab947d3a1d65b87b25fde39e9172ae1bec562488335633b4 |
|
MD5 | 8130d83a3854fb37282fbb1d7e1f3002 |
|
BLAKE2b-256 | 3cc1583ea1902d5b88b176533406992a5eacd28ada2eb1d5bac80ffd88f72723 |
Hashes for greenlet-0.4.14-cp34-cp34m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0411b5bf0de5ec11060925fd811ad49073fa19f995bcf408839eb619b59bb9f7 |
|
MD5 | 0e05a6b8ee5ba0fe34c04f37c336fbd1 |
|
BLAKE2b-256 | 4e3fc378bb476744e08581cbf21448b06cbd4558e41b8e9f47c42753f4c91eb9 |
Hashes for greenlet-0.4.14-cp34-cp34m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fdb524767288f7ad161d2182f7ed6cafc0a283363728dcd04b9485f6411547c |
|
MD5 | 1f057fecacc2a99cf1cb70e99a136087 |
|
BLAKE2b-256 | add3c321c2729cad7779130d59aeac8cccd95635ee10a9aec0fc2da536e559ab |
Hashes for greenlet-0.4.14-cp33-cp33m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31dc4d77ef04ab0460d024786f51466dbbc274fda7c8aad0885a6df5ff8d642e |
|
MD5 | d4c2c1f4d70923dd1af3309ca4d24284 |
|
BLAKE2b-256 | eb59fce2213922598a7015dafa8a8b0f6c5e0d5b466c909b0b41cf58018942ec |
Hashes for greenlet-0.4.14-cp33-cp33m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 131f4ed14f0fd28d2a9fa50f79a57d5ed1c8f742d3ccac3d773fee09ef6fe217 |
|
MD5 | 3244817cc2f491f01e5b89a5dca416e3 |
|
BLAKE2b-256 | ed10a9a0497d12279d53f4e32800865e8498f442c1032e6b8d1642c62d13eeba |
Hashes for greenlet-0.4.14-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 426a8ef9e3b97c27e841648241c2862442c13c91ec4a48c4a72b262ccf30add9 |
|
MD5 | 282df24f0911ec8530297af175f94eb2 |
|
BLAKE2b-256 | 7e4ade7c8b50bf0e80ef1fbe8963413e0b6993425783391988d8d442f65dd0e0 |
Hashes for greenlet-0.4.14-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13510d32f8db72a0b3e1720dbf8cba5c4eecdf07abc4cb631982f51256c453d1 |
|
MD5 | 17409cb218197c32ea4bf0e698d4059a |
|
BLAKE2b-256 | ad231a05344026d49ba6a685ebad19933cdae0ef133038da5a941bfe2b215a6d |
Hashes for greenlet-0.4.14-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6a05ef8125503d2d282ccf1448e3599b8a6bd805c3cdee79760fa3da0ea090e |
|
MD5 | f015ad30d1845a6f3866101d4414a4fa |
|
BLAKE2b-256 | fed65f30e6e4d419c462d49352e3e13b9731e77616c13e7774ca518617a3d0a0 |
Hashes for greenlet-0.4.14-cp27-cp27m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80bd314157851d06f7db7ca527082dbb0ee97afefb529cdcd59f7a5950927ba0 |
|
MD5 | 2237fe6cd0e9c772f3ad8c6f90df6c0d |
|
BLAKE2b-256 | ac3e238e11d0ce32c3059064914e7f90233baff2916b3a991f3ca51ee2f0793b |