News for hackers. Stuff that matters.
Re:A lot of complex “scalable” systems can be done with a si... by aspaceman on Sunday December 29, 2019 @04:48PM (#21908761)
It still hits the problems, but it can still be better than single-threaded. That's the point of his comment. People say the GIL is bad so they throw the baby out with the bathwater and no longer use threads, which isn't very well-reasoned.

Been a while since I've used Python, but as far as I remember the GIL only affects Python objects. So if you use Numpy for operations, you can avoid the GIL.

Re:A lot of complex “scalable” systems can be done with a si... by paulddraper on Monday December 30, 2019 @11:40AM (#21914561)
> as far as I remember the GIL only affects Python objects. So if you use Numpy for operations, you can avoid the GIL.

Correct.

Threads cannot help Python-heavy code; they can help I/O-heavy or native-heavy code (assuming native code releases the GIL).

Even without multithreading, numpy programming can give amazing speedups. It's the reason why data science Python isn't dead in the water.

Re:A lot of complex “scalable” systems can be done with a si... by numbernine on Sunday December 29, 2019 @06:08PM (#21909283)
Can you give an example for your last sentence?
Re:A lot of complex “scalable” systems can be done with a si... by aspaceman on Sunday December 29, 2019 @11:27PM (#21910808)
Here's a link: https://scipy-cookbook.readthedocs.io/items/ParallelProgramm... And a quote in italics below.

And, more importantly for us, while numpy is doing an array operation, python also releases the GIL. Thus if you tell one thread to do:

  print "%s %s %s %s and %s" %( ("spam",) *3 + ("eggs",) + ("spam",) )
  A = B + C
  print A
During the print operations and the % formatting operation, no other thread can execute. But during the A = B + C, another thread can run - and if you've written your code in a numpy style, much of the calculation will be done in a few array operations like A = B + C. Thus you can actually get a speedup from using multiple threads.