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.13-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1852b51b06d1367e2d70321f6801844f5122852c9e5169bdfdff3f4d81aae30 |
|
MD5 | 1630813d3d5ee8d28d1e9766b5d181bb |
|
BLAKE2b-256 | 6111017924bbe9c4d081682aa0ae23f3b12f3889b690c07fba5c5511a00b8c65 |
Hashes for greenlet-0.4.13-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fff21a2da5f9e03ddc5bd99131a6b8edf3d7f9d6bc29ba21784323d17806ed7 |
|
MD5 | 8e8450f9daec23c7b6f3a8abd36f0842 |
|
BLAKE2b-256 | 76139b4ce3e6f701b67b8abc90b7d97bf34f3f2fc7ebda73cef1be9bb0ea85c9 |
Hashes for greenlet-0.4.13-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad2383d39f13534f3ca5c48fe1fc0975676846dc39c2cece78c0f1f9891418e0 |
|
MD5 | 2d25f0191297fe11f0b03dce6bd23c88 |
|
BLAKE2b-256 | 42f76df3cedd01db0780f338a2e2b35edee5617a95d125acb9e68e298ebc5bec |
Hashes for greenlet-0.4.13-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42118bf608e0288e35304b449a2d87e2ba77d1e373e8aa221ccdea073de026fa |
|
MD5 | ced92035057b8f2d0de1103927902525 |
|
BLAKE2b-256 | ddce7b3a19a3eb8c79e6237ba1fb7a8729b39034dd2de8753b8d27e5abc59fd5 |
Hashes for greenlet-0.4.13-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58798b5d30054bb4f6cf0f712f08e6092df23a718b69000786634a265e8911a9 |
|
MD5 | fa30db3b5512cadbce68c6fe9c294876 |
|
BLAKE2b-256 | 150f49a686554242a89bf6677f591f93e3421228fe9f906c6675d9cc0c2736ab |
Hashes for greenlet-0.4.13-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75c413551a436b462d5929255b6dc9c0c3c2b25cbeaee5271a56c7fda8ca49c0 |
|
MD5 | 92057b3d259967e05c3f0b10b520dd77 |
|
BLAKE2b-256 | 72d9fd83dc976568c4d2237f991a24d904fa8c06d6aa1b66071fa8a6291ef8a0 |
Hashes for greenlet-0.4.13-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b7df09c6598f5cfb40f843ade14ed1eb40596e75cd79b6fa2efc750ba01bb01 |
|
MD5 | 038e7f1b0bb61ff84206e7a82f7e36a4 |
|
BLAKE2b-256 | 07611042b0a7e856ad3cb43d2a2bbb0773dfd64a8ed6830089c6e369b97f1ab0 |
Hashes for greenlet-0.4.13-cp34-cp34m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8f2a0ae8de0b49c7b5b2daca4f150fdd9c1173e854df2cce3b04123244f9f45 |
|
MD5 | dba02922e0b083777a81f502bd263c52 |
|
BLAKE2b-256 | fcca4a41caced97357b3217c20e831d3defcbcbfbdac984de84315321e60eda3 |
Hashes for greenlet-0.4.13-cp34-cp34m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09ef2636ea35782364c830f07127d6c7a70542b178268714a9a9ba16318e7e8b |
|
MD5 | b066ee25929db5accdabc294da764816 |
|
BLAKE2b-256 | 6d391a1b06012b3d63055a8fbe216b6d6279b0b09793c689e6419a82cb102661 |
Hashes for greenlet-0.4.13-cp34-cp34m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b49b3049697aeae17ef7bf21267e69972d9e04917658b4e788986ea5cc518e8 |
|
MD5 | 2fcc19ab26438891f8c468648c140206 |
|
BLAKE2b-256 | 01854e48feba4db28e89c32c4cf274c2dd1fc3b48a99ce167e9aa84b09438428 |
Hashes for greenlet-0.4.13-cp33-cp33m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2de19c88bdb0366c976cc125dca1002ec1b346989d59524178adfd395e62421 |
|
MD5 | 776d3866e622bb9d6e14b5438df93e3f |
|
BLAKE2b-256 | 548abba7c84ae9d2a65e5545814497b7c8936c62b543154deb6082390407089c |
Hashes for greenlet-0.4.13-cp33-cp33m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 769b740aeebd584cd59232be84fdcaf6270b8adc356596cdea5b2152c82caaac |
|
MD5 | 702037a7ff009f30a48337b378a8e51e |
|
BLAKE2b-256 | 311efaa30295fa493812b560d2f282e0b91c636a3dbacc73f46c8429b2bb2fc3 |
Hashes for greenlet-0.4.13-cp33-cp33m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b417bb7ff680d43e7bd7a13e2e08956fa6acb11fd432f74c97b7664f8bdb6ec1 |
|
MD5 | dfbda76425495ceafb9b7fac067bd0ae |
|
BLAKE2b-256 | ab82a503adceaefb527c63c7ab5e6a49411a943f2a26ab3a35d5a46ef1d4f77c |
Hashes for greenlet-0.4.13-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7b04a6dc74087b1598de8d713198de4718fa30ec6cbb84959b26426c198e041 |
|
MD5 | 1192c47629d134316e5b4b954bfe1c31 |
|
BLAKE2b-256 | b9e5191ba8664e4c388646b91c9891e15381cb1b515e9c9059d1e6485d5ebbe3 |
Hashes for greenlet-0.4.13-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcfadaf4bf68a27e5dc2f42cbb2f4b4ceea9f05d1d0b8f7787e640bed2801634 |
|
MD5 | 2a0714e515396bccf7e9f2acb8ae0625 |
|
BLAKE2b-256 | 9250bbc21b30f3457b1e558a4a8c96b78080c92b7af50a3f8096af09a8b257cd |
Hashes for greenlet-0.4.13-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6ef0cabaf5a6ecb5ac122e689d25ba12433a90c7b067b12e5f28bdb7fb78254 |
|
MD5 | 03cd837782fdbb08033e32bf2d81efec |
|
BLAKE2b-256 | f1bf085bdd0e50675090fbb6b5cc5a6fe61cdcd761465055807789aa8082ad73 |
Hashes for greenlet-0.4.13-cp27-cp27m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50643fd6d54fd919f9a0a577c5f7b71f5d21f0959ab48767bd4bb73ae0839500 |
|
MD5 | 173076d10dcf14b009b75a823c83b88a |
|
BLAKE2b-256 | 7fd8f991b22b5853cfe36d0ca290104ce936abe375337bfcc594b2d70f7e97f0 |