3 ms·
Python with asyncio and multithreading doesn't take good advantage of multiple cores due to the global interpreter lock. With multiprocessing, one pays big cost
by armitron 7y ago
Python with asyncio and multithreading doesn't take good advantage of multiple cores due to the global interpreter lock. With multiprocessing, one pays big costs in IPC.
Python is not at all suitable today for parallelism. Which is one reason why languages like Go and Elixir are gaining so much traction.
- no_wizard 7y agoThey’re actively working on a neat angle at solving this problem via much cleaner IPC through spawning sub interpreters https://www.python.org/dev/peps/pep-0554/ https://www.python.org/dev/peps/pep-0554/ This just may be the way forward in the Python ecosystem
- blattimwind 7y agoSubinterpreters share a common GIL. Also subinterpreters don't share Python objects, which means among other things that all modules are imported separately in each SI, which increases startup time, memory usage and reduce cache effectiveness. It's a band-aid. If you want to run Python code in parallel, without large overhead, then CPython is simply not your environment to do so, and Python is not a good choice overall in that kind of endeavour.
- blattimwind 7y ago> Python is not at all suitable today for parallelism. As a long time Python dev, including work on parallel applications, I have to agree. It's always annoying in Python, and entirely Un-Pythonic.