>> A) Python threads are not real threads. It multiplexes "Python Threads" >> on a single OS thread. (Guido, can you correct me if I'm wrong, >> and can you provide some info on multiplexing/context switching of >> "Python Threads"?)
> Sorry, you are wrong. Python threads map 1:1 to OS threads. They are as > real as threads come (the GIL notwithstanding). Ok then. Just to confirm for cpython: - Among these OS threads, only one thread can run at a time due to GIL. A thread releases GIL (thus allow any other thread began execution) when waiting for blocking I/O. (http://www.dabeaz.com/python/GIL.pdf) This is similar to what we do in asyncio with awaits. Thus, multi-threaded I/O is the next best thing if we do not use asyncio. Then the question is still this: Which one is cheaper? Thread overheads or asyncio overheads.