News for hackers. Stuff that matters.
Re:Python Threading Beginners Tutorial [video] by MikkoFinell on Thursday August 17, 2017 @07:13AM (#15035634)
Isn't multiprocessing almost syntactically equivalent to--but much more efficient than--threading in python?
Re:Python Threading Beginners Tutorial [video] by wdroz on Thursday August 17, 2017 @07:46AM (#15035821)
The problem is the GIL : https://wiki.python.org/moin/GlobalInterpreterLock

Multiprocessing allows you to use all cores, but you can't share memory like in threads. So you have to Serialize/Deserialize a lot for exchange data.

If your serializations cost are low and need computation power, you should use multiprocessing. If you are just waiting I/O you can use threads.

BTW, modern python "ProcessPoolExecutor" is not designed for compute heavy batch like "Pool" from "multiprocessing".

Re:Python Threading Beginners Tutorial [video] by chrisseaton on Thursday August 17, 2017 @07:28AM (#15035713)
Syntactically equivalent? The syntax is the same - both multiprocessing and threading are achieved through libraries and VM primitives, not by additional syntax.

But if you meant semantically equivalent, no they aren't - threading is shared memory and multiprocessing is message passing. If you were to draw a tree of approaches to concurrency and parallelism, you would probably make this division the root node bisecting the domain into two - it's the two fundamental approaches to doing concurrency.

Re:Python Threading Beginners Tutorial [video] by vitus on Thursday August 17, 2017 @08:03AM (#15035908)
> threading is shared memory and multiprocessing is message passing

In most cases, yes. You can use shared memory buffers for IPC, though, although it typically requires more effort.

Re:Python Threading Beginners Tutorial [video] by pvg on Thursday August 17, 2017 @07:46AM (#15035823)
It's an implementation difference with big practical implications. 'Fundamental divide at the root of all concurrency' seems more than a little overstated.
Re:Python Threading Beginners Tutorial [video] by chrisseaton on Thursday August 17, 2017 @08:02AM (#15035902)
Almost every approach to concurrency fits into either shared memory or message passing.

Those that cross between the two are usually notable for doing that and describe themselves as a hybrid approach.

I think it divides the literature pretty cleanly in two.