{"name":"py35-greenlet","portdir":"python/py-greenlet","version":"2.0.2","license":"MIT and PSF","platforms":"darwin","epoch":0,"replaced_by":null,"homepage":"https://github.com/python-greenlet/greenlet","description":"Lightweight in-process concurrent programming","long_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 test_generator.py. Greenlets are provided as a C extension module for the regular unmodified interpreter.","active":false,"categories":["devel","python"],"maintainers":[{"name":"stromnov","github":"stromnov","ports_count":2896}],"variants":["universal"],"dependencies":[{"type":"build","ports":["py35-setuptools","clang-17"]},{"type":"lib","ports":["python35"]},{"type":"test","ports":["py35-pytest"]}],"depends_on":[{"type":"lib","ports":["py35-bpython","py35-scoop","py35-gevent","py35-gevent-websocket"]}]}