Я начал изучать python пару месяцев назад, затем нашел Jython.jython multithreading
Действительно ли потоки работают правильно в Jython, так как это doesn't have a GIL? Если да, можете ли вы предложить хорошую книгу о параллелизме (threading)?
Я начал изучать python пару месяцев назад, затем нашел Jython.jython multithreading
Действительно ли потоки работают правильно в Jython, так как это doesn't have a GIL? Если да, можете ли вы предложить хорошую книгу о параллелизме (threading)?
Лучшая книга, с которой я столкнулась при многопоточности, - «Java Concurrency in Practice». Он очень концентрируется на параллелизме потоков Java и одновременно смиряется и увлекается, когда вы начинаете понимать проблемы и возможности, возникающие в результате параллелизма. Копия, которую я купил несколько лет назад, имела некоторые ошибки в кодировании, хотя, что усугубляло уже вызывающий мозг предмет: проверьте здесь ошибку: http://jcip.net/errata.html.
Хотя он предназначен для разработчиков Java, желающих перейти на параллелизм (который, кстати, включает всех, кто когда-либо использовал интерфейс GUI любого типа), я уверен, что технические трудности и тонкости, изложенные в книге, применимы к любой реализации параллелизм.
Кстати, я также люблю Jython и могу подтвердить, что все, что вы можете сделать в Java, что вы можете сделать в Java, вы, по-видимому, можете сделать в Jython. Однако есть предостережение: параллелизм может быть для асинхронного программирования (включая графический интерфейс) и/или для производительности. Если для последнего у вас есть проблема, на мой взгляд: Jython по моему опыту работает примерно на 10 x медленнее, чем эквивалентная Java-программа.
Это означает, что вашим более требовательным модулям Jython придется вызывать что-то другое, кроме Jython, для задач с хрустом числа. В то же время, Jython до сих пор * не имел многопроцессорного модуля Python, поэтому межпроцессные коммуникации отсутствуют, если вы не отправитесь в ужасную территорию RMI. Ты больше мужчина или женщина, чем я, если ты примешь этот вариант. Но все в порядке: см. «Окончательное руководство по Jython» на странице http://www.jython.org ... глава 19 - это своего рода введение в контекст, чтобы остановить параллельность, а глава 10 посвящена интеграции Java и Jython (подсказка: это абсурдно легко).
PS последнее слово: большинство экспертов, которые знают намного больше об этих вещах, чем я говорю, что закон Мура быть заменен в importtance законом Амдаля, который в короткие означает, что сложная задача программирования стабильной и масштабируемые истинные параллельные программы будут неизбежны в будущем. Точно, насколько легко может быть реализовано параллельное параллельное использование (т. Е. Поток) с использованием умных инструментов анализа кода, которые я не могу сказать, но инвестиции в эту тему и увлекательные, интеллектуальные новые дисциплины рассуждений, налагаемые параллелизмом, вероятно, окупится ... если вам нравится вызов.
Да, с Jython у вас есть real multi-threading. Jython (преемник JPython) - это реализация Python, которая работает в JVM. Одно из главных отличий между Jython и оригинальным проектом заключается в том, что первое не имеет GIL и реализует реальную поддержку многопоточности, основанную на реализации JVM.
Первоначально запутанный аспект может заключаться в том, что механизмы параллелизма Java и Jython связаны с you can mix and match. Но все это работает.Причины таковы:
... нет приоритетов, ни потоковые группы, ни потоки не могут быть уничтожены, остановлены, приостановлены, возобновлены или прерваны. [1]
питон идиомы, вероятно, немного более удобно, потому что, например, если вы хотите сделать эквивалент synchronized (some_object) { ... }
, есть a small bit of fiddling required, который, вероятно, будет менее читаемым, чем при использовании RLock ,
Это хороший вопрос, я честно не знаю ответа, но у меня многопоточность с обоими, поэтому, возможно, лучший вопрос: «Нужно ли использовать многопроцессор python или потоки Java»? Я уверен, что он просто не уверен, какой из них вам нужно использовать, поскольку jython - это смесь обоих. – Lostsoul
Вы имеете в виду Jpython, или Jython? Это тип открытого вопроса, который не очень подходит для SO, кстати. –
Согласно [этому вопросу (http://stackoverflow.com/questions/4227269/hidden-multithreading-bottlenecks-in-jython), ответ да. Я понимаю, что можно получить доступ к библиотекам многопоточности python или к поддержке java-параллелизма через jython. –