think-async
gevent
Our great sponsors
think-async | gevent | |
---|---|---|
4 | 5 | |
222 | 6,161 | |
- | 0.3% | |
7.8 | 8.7 | |
3 months ago | 2 months ago | |
Python | Python | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
think-async
-
Think Async: Resources for Exploring Different Concurrency Paradigms in Python
Lately, at my workplace, I've been doing a lot of asynchronous I/O programming in Python. In my case, ironically, I picked up Golang faster than Python's async paradigm despite Python being my primary language. Coroutine chauffeured asynchronous programming demanded a substantial shift in the way I used to compose solutions in synchronous Python.
However, after successfully writing two services using asyncio, SQS, DynamoDB, and aiobotocore—I'm convinced that this is actually worth it. Here're a few resources that I've found helpful along the way. Pull requests are very much welcome.
https://github.com/rednafi/think-async
- Think Async in Python
gevent
-
Is anyone using PyPy for real work?
A sub-question for the folks here: is anyone using the combination of gevent and PyPy for a production application? Or, more generally, other libraries that do deep monkey-patching across the Python standard library?
Things like https://github.com/gevent/gevent/issues/676 and the fix at https://github.com/gevent/gevent/commit/f466ec51ea74755c5bee... indicate to me that there are subtleties on how PyPy's memory management interacts with low-level tweaks like gevent that have relied on often-implicit historical assumptions about memory management timing.
Not sure if this is limited to gevent, either - other libraries like Sentry, NewRelic, and OpenTelemetry also have low-level monkey-patched hooks, and it's unclear whether they're low-level enough that they might run into similar issues.
For a stack without any monkey-patching I'd be overjoyed to use PyPy - but between gevent and these monitoring tools, practically every project needs at least some monkey-patching, and I think that there's a lack of clarity on how battle-tested PyPy is with tools like these.
- SynchronousOnlyOperation from celery task using gevent execution pool on django orm
-
How to Choose the Right Python Concurrency API
I'm not sure how much it replicates the CSP model, but the closest thing I've found to Go-style concurrency in Python is gevent: https://github.com/gevent/gevent
I personally still prefer to use it in all my projects.
-
I have a problem with installing Ajenti on a 64bit Ubuntu 21.04 server
Greenlet seems to have some troubles compiling with Python 3.9. https://github.com/gevent/gevent/issues/1627
What are some alternatives?
Joblib - Computing with Python functions.
eventlet - Concurrent networking library for Python
aiomultiprocess - Take a modern Python codebase to the next level of performance.
Ray - Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.
arq - Fast job queuing and RPC in python with asyncio and redis.
Faust - Python Stream Processing
vermin - Concurrently detect the minimum Python versions needed to run code
Thespian Actor Library - Python Actor concurrency library
mnqueues - Monitored Multiprocessing Queues
kombu - Messaging library for Python.
regta - 📅 Production-ready scheduler with async, multithreading and multiprocessing support for Python
Tomorrow - Magic decorator syntax for asynchronous code in Python