P
Paul Rubin
Paul Boddie said:What makes all of the following not "Pythonic"...?
http://wiki.python.org/moin/ParallelProcessing
I'd say mainly that they don't allow sharing data between processes
except through expensive IPC mechanisms involving system calls.
I'm sure one could define "Pythonic" as being "you can write
code like you do now (but not like any of the ways encouraged by the
aforementioned solutions) and it just works over multiple processors/
cores", but that's a view which is somewhat detached from the
practicalities (and favoured practices) of concurrent programming,
especially given the few guarantees Python would be able to provide to
make such a thing work effectively.
Really, the existence of the GIL comes as an unpleasant surprise to
progrmamers used to multi-threaded programming in other languages
whose synchronization features outwardly look about the same as
Python's. Somehow those other languages manage to use multiple CPU's
based on those features, without needing a GIL. We are looking at a
Python implementation wart, not "practicalities" inherent in the
nature of concurrency.