[1] http://eli.thegreenplace.net/2011/12/27/python-threads-commu...
Threading in Python
11–20 of 30 posts
Re: Threading in Python
#12Re: Threading in Python
#13Here's the problem. Threads are really useful only if you can share memory between threads. If you can't share memory, you're usually better off using many processes.
Threads in Python (ie. CPython) can still be useful for I/O multiplexing or executing native code in background worker threads via FFI and releasing the GIL while doing so. For I/O multiplexing, there are better options than Python threads (select/poll/kqueue/epoll system calls and frameworks like twisted that use them).
In most applications, threads probably should not be used in CPython/CRuby code as they provide little performance gain compared to the complexity and overhead they add.
Re: Threading in Python
#14> Generally, you should only use threads if the following is true: - Sharing memory between threads is not an issue. Here's the problem. Threads are really useful only if you can share memory between threads. If you can't share memory, you're usually better off using many processes. Threads in Python (ie. CPython) can still be useful for I/O multiplexing or executing native code in background worker threads via FFI a…
Re: Threading in Python
#15Earlier quoted context omitted.
Concurrency itself is not desirable. It is a means to end such as performance.
This turns out not to be the case - some problems and calculations are most naturally expressed with concurrency.
Re: Threading in Python
#16Re: Threading in Python
#17Re: Threading in Python
#18Earlier quoted context omitted.
It still provides concurrency.
Concurrency itself is not desirable. It is a means to end such as performance.
Sorry, but you this is misguided. You are almost certainly using an OS that gives you concurrency, even if you only have one core of execution on your cpu. Concurrency is only natural, and is in fact a requirement when you start talking about GUIs. Even for something like data processing, you usually have a thread doing the processing, and another thread controlling everything. The advantage of threads is the natural separation of tasks, simplifying how programs are written. Not having the advantage of performance in python is unfortunate, however this is only one use for threads, which is by far not the most common.
Re: Threading in Python
#19Re: Threading in Python
#20> Generally, you should only use threads if the following is true: - Sharing memory between threads is not an issue. Here's the problem. Threads are really useful only if you can share memory between threads. If you can't share memory, you're usually better off using many processes. Threads in Python (ie. CPython) can still be useful for I/O multiplexing or executing native code in background worker threads via FFI a…
Got parallel needs at your core? Look at Erlang or Haskell. If parallel or distributed work is mission critical, go with a language that has such things at its very soul. Python is a great language, but it is being enthusiastically bent to do things it is not top of the class for.
Want to handle more concurrent connections per python web server? If WSGI in Gunicorn is not enough, stop trying and use a load balancer to spread work between more servers.