многопоточность Python / Ruby против Java? - PullRequest
2 голосов
/ 03 июня 2010

Интересно, является ли многопоточность в python / ruby ​​эквивалентной многопоточности в java?

под этим я подразумеваю, это так же эффективно?

потому что, если вы хотите создать приложение чата, использующее кометную технологию, я знаю, что вы должны использовать многопоточность.

это значит, что я могу использовать для этого python или ruby ​​или лучше с java?

спасибо

Ответы [ 3 ]

9 голосов
/ 03 июня 2010

Речь идет не о Ruby, Python или Java, а о конкретной реализации Ruby, Python или Java. Существуют реализации Java с чрезвычайно эффективными реализациями потоков, а также есть реализации Java с чрезвычайно плохими реализациями потоков. То же самое верно для Ruby и Python, и на самом деле любой язык вообще.

Даже такие языки, как Erlang, где неэффективная реализация потоков не имеет смысла смысла , иногда имеют плохие реализации потоков.

Например, если вы используете JRuby или Jython, то ваши потоки Ruby и Python являются потоками Java. Таким образом, они не только так эффективны, как потоки Java, они точно такие же , что и потоки Java.

3 голосов
/ 03 июня 2010

И Ruby, и Python используют глобальную блокировку интерпретатора. Этот вопрос подробно обсуждается здесь: Имеет ли ruby ​​реальную многопоточность?

1 голос
/ 03 июня 2010

Философия не ошибается, чтобы указать на ограничение, которое представляет GIL. Я не буду говорить за Ruby, но я уверен, что можно с уверенностью предположить, что когда вы ссылаетесь на Python, вы на самом деле ссылаетесь на каноническую реализацию cPython.

В случае cPython GIL важнее всего, если вы хотите распараллелить вычислительно-интенсивные операции, реализованные в Python (как не в расширениях C, где GIL может быть освобожден).

Однако, когда вы пишете неинтенсивное приложение, связанное с вводом / выводом, такое как программа чата, эффективность реализации многопоточности действительно не имеет большого значения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...