[Python-Dev] A more flexible task creation
chris.barker at noaa.gov
Thu Jun 14 15:14:18 EDT 2018
Excuse my ignorance (or maybe it's a vocabulary thing), but I'm trying to
understand the problem here.
But if I have this right:
I've been using asyncio a lot lately and have encountered this problem
> several times. Imagine you want to do a lot of queries against a database,
> spawning 10000 tasks in parallel will probably cause a lot of them to fail.
async is not parallel -- all the tasks will be run in the same thread
(Unless you explicitly spawn another thread), and only one task is running
at once, and the task switching happens when the task specifically releases
If it matters in what order the tasks are performed, then you should not be
So why do queries fail with 10000 tasks? or ANY number? If the async DB
access code is written right, a given query should not "await" unless it is
in a safe state to do so.
So what am I missing here???
What you need in a task pool of sorts, to limit concurrency and do only 20
> requests in parallel.
still wrapping my head around the vocabulary, but async is not concurrent.
If we were doing this synchronously, we wouldn't spawn 10000 threads using
> 10000 connections,
and threads aren't synchronous -- but they are concurrent.
> we would use a thread pool with a limited number of threads and submit the
> jobs into its queue.
because threads ARE concurrent, and there is no advantage to having more
threads than can actually run at once, and having many more does cause
thread-switching performance issues.
To me, tasks are (somewhat) logically analogous to threads.
kinda -- in the sense that they are run (and completed) in arbitrary order,
But they are different, and that difference is key to this issue.
As Yury expressed interest in this idea, there must be something I'm
What is it?
Christopher Barker, Ph.D.
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-Dev