Изучение C или C ++ было бы более трудным, но вы, вероятно, стали бы гораздо более привыкшими к основам, что никогда не было бы плохо.
При этом, я не уверен насчет "желательного", но это не будет "неправильно" ... скорее вопрос предпочтения.
Python (the language) doesn't need a GIL (which is why it can perfectly be implemented on JVM [Jython] and .NET [IronPython], and those implementations multithread freely). CPython (the popular implementation) has always used a GIL for ease of coding (esp. the coding of the garbage collection mechanisms) and of integration of non-thread-safe C-coded libraries (there used to be a ton of those around;-).
The Unladen Swallow project, among other ambitious goals, does plan a GIL-free virtual machine for Python -- to quote that site, "In addition, we intend to remove the GIL and fix the state of multithreading in Python. We believe this is possible through the implementation of a more sophisticated GC system, something like IBM's Recycler (Bacon et al, 2001)."
JVM (по крайней мере, точка доступа) действительно имеет концепцию, аналогичную "GIL", только она намного более тонкая по степени детализации блокировок, большая часть из них исходит из более продвинутых GC в горячей точке .
В CPython это одна большая блокировка (вероятно, не совсем так, но достаточно для аргументов), в JVM она более распространена с различными концепциями в зависимости от того, где она используется.
Взгляните на, для Например, vm / runtime / safepoint.hpp в коде точки доступа, который фактически является препятствием. Оказавшись в безопасной точке, вся виртуальная машина остановилась в отношении Java-кода, так же, как виртуальная машина python останавливается в GIL.
В мире Java такие события приостановки виртуальной машины в этих точках известны как «остановка мира». свободно работает только собственный код, связанный с определенными критериями, остальная часть виртуальной машины остановлена.
В этом сообщении в блоге ниже есть комментарий http://www.grouplens.org/node/244, который намекает на причину, по которой было так легко обойтись без GIL для IronPython или Jython, это то, что CPython использует подсчет ссылок, тогда как другие 2 виртуальные машины имеют сборщики мусора. .
Я не понимаю точной механики, почему это так, но это действительно похоже на правдоподобную причину.