The title says it all. It seems better and faster to use one of the methods belonging to gevent.Pool to run greenlets in parallel (sort-of) in a pool, as opposed to gevent.joinall(). What are the pros and cons of each approach?
Why Use gevent.joinall() Instead of pool.imap_unordered() to Run Greenlets?
158 Views Asked by Daniel At
1
There are 1 best solutions below
Related Questions in PYTHON
- How to store a date/time in sqlite (or something similar to a date)
- Instagrapi recently showing HTTPError and UnknownError
- How to Retrieve Data from an MySQL Database and Display it in a GUI?
- How to create a regular expression to partition a string that terminates in either ": 45" or ",", without the ": "
- Python Geopandas unable to convert latitude longitude to points
- Influence of Unused FFN on Model Accuracy in PyTorch
- Seeking Python Libraries for Removing Extraneous Characters and Spaces in Text
- Writes to child subprocess.Popen.stdin don't work from within process group?
- Conda has two different python binarys (python and python3) with the same version for a single environment. Why?
- Problem with add new attribute in table with BOTO3 on python
- Can't install packages in python conda environment
- Setting diagonal of a matrix to zero
- List of numbers converted to list of strings to iterate over it. But receiving TypeError messages
- Basic Python Question: Shortening If Statements
- Python and regex, can't understand why some words are left out of the match
Related Questions in MULTITHREADING
- How can I outsource worker processes within a for loop?
- OpenMP & oneTbb difference
- Receiving Notifications for Individual Task Completion OmniThreadLibrary Parallel.ForEach
- C++ error: no matching member function for call to 'enqueue' futures.emplace_back(TP.enqueue(sum_plus_one, x, &M));
- How can I create a thread in Haskell that will restart if it gets killed due to any reason?
- Qt: running callback in the main thread from the worker thread
- Using `static` on a AVX2 counter function increases performance ~10x in MT environment without any change in Compiler optimizations
- Heap sort with multithreading
- windows multithreading CreateMutex
- The problem of "fine-grained locks and two-phase locking algorithm"
- OpenMP multi-threading not working if OpenMPI set to use one or two MPI processor
- WPF Windows Initializing is locking the separated thread in .Net 8
- TCP Client Losing Connection When Writing Data
- vc++ thread constructor throwing compiler error c2672
- ASP.NET Core 6 Web API : best way to pause before resending email
Related Questions in POOL
- Is there a way to create connection pooling in codeigniter 3 using custom mysqli driver?
- Is it possible to set a minimum connections count for HTTP Client pool?
- what wrong in line 26 that im getting an error
- Is there some sort of pool in Java that avoids repeating recents arithmetic operations?
- Terraform deploy Cognito Pool. "Invitation message" is always reset to default
- How to use python Pool to save data in dict?
- Multiprocessing pool, whether using map or async, hangs on last couple processes
- "pg: connection pool error" and the service never reconnect to db
- multiprocessing Manager fails to apply_async from a shared process.pool
- Parallelize a for loop with pool.imap
- Why does the string class have the parameterless constructor and the constructor that takes a string literal as argument?
- the last page is not constructed
- How to reuse a goroutine instead of creating a new goroutine for reach async call
- getting JedisExhaustedPoolException even though JedisPool stats showing Idle connection count as 8
- nodejs mongoDB connection management failed
Related Questions in GEVENT
- How to suppress gevent error message on flask server running HTTP when it gets an HTTPS request
- Recursion Error when s3 client is initialized within Inference script for my SageMaker Endpoint
- Flask Socket IO with gunicorn + gevent
- Retry connection in case of pgbouncer client login timeout error for gevent celery worker
- Construct new event loop on gevent workers
- Celery worker does not start running when using the geventpool and starting from within Python
- what is difference from parallel option and no-wait option in pyinfra
- Flask | Socketio | Gevent or Eventlet | Windows IIS.....do these things work together?
- Combining Celery Gevent Pool with asyncio (asgiref)
- ssl.SSLError: [SSL: BAD_LENGTH] bad length (_ssl.c:2483) from gevent when mqtt payload size is more than 100kb
- I am trying to install dependency gevent 23.9.1 on ubuntu 20.04, failing to build wheel with python 3.10
- How to make Celery tasks with gRPC calls execute concurrently?
- Async Flask endpoint does not work concurrently due to "You cannot use AsyncToSync in the same thread as an async event loop" error
- Using Auto-py-to-exe with MULTIPROCESSING lib: UndefinedEnvironmentName: 'extra' does not exist in evaluation environment
- Conflict between grequests / gevent and sshtunnel
Related Questions in GREENLETS
- received error: --plat-name must be one of ('win32', 'win-amd64', 'win-arm32', 'win-arm64') when trying to install sqlalchemy through pip
- Following FastAPI Tutorial - Poetry install failing on Greenlet
- Performance implications of using AsyncAttrs/awaitable_attrs in SQLAlchemy
- The size of gevent/eventlet pool with python-socketio in production
- Greenlet installation fails with `OSError`
- python3.11 + Celery + Gevent -> "returned NULL without setting an exception"
- Use gevent library instead of greenlet library
- Error using Thread.start() with Python3.9 and Gevent worker class
- Error installing flask-sqlalchemy "Could not build wheels for greenlet..."
- ImportError: DLL load failed while importing _greenlet: The specified module could not be found
- How to make Celery I/O bound tasks execute concurrently?
- Running locust in docker produces OSError: [Errno 97] Address family not supported by protocol
- missing greenlet in schema response model fastapi
- Prefer binary package in setup.cfg
- ModuleNotFoundError: No module named 'greenlet._greenlet'
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I think the key difference is not raw performance but instead performance management. When you use gevent.joinall() you have to do your own management of how many greenlets exist at once. The naive implementation would create as many as might be needed by the request for the computation.
On the other hand gevent.Pool can easily be configured to cap how many are running at once and thus protect against running your application out of resources.
As usual, it's tradeoffs. Your pool may run slower because it potentially won't allow as many greenlets to run as would a naive implementation using gevent.joinall(), however, you are less likely to run your application out of resources (and cascade into other errors).
Ultimately you have to answer questions like this: Are you likely to get too large of requests? Do you have plenty of resources to draw from? Is raw peak performance more important than average reliability?