Быстро ли обрабатывает pypy потоки и сокеты по сравнению с написанным от руки C?
Нет.Обычно это то же самое или хуже.
PyPy сохраняет глобальную блокировку интерпретатора (GIL), которую имеет CPython.Это означает, что собственные потоки не могут запускать код Python параллельно.Потоки Python также имеют дополнительную семантику, которая обходится дорого.Большая часть синхронизации окружает запуск потока Python, завершение работы и отслеживание объектов потока.Для сравнения, потоки C будут запускаться быстрее, дешевле в использовании и могут работать полностью параллельно.
Эффективная обработка сокетов требует минимизации времени, не затрачиваемого на ожидание следующего события сокета.Поскольку модель потоков PyPy по-прежнему связана с GIL, это означает, что потоки, которые возвращаются из блокирующих вызовов сокетов, не могут продолжаться, пока не получат GIL.Эквивалентный код C обычно выполняется быстрее и может быстрее вернуться к ожиданию событий сокета.
По сравнению с обычным питоном?
Да.Но не сильно.
По вышеуказанным причинам PyPy, за исключением случайных скачков из-за JIT и других издержек, потребует меньше процессорного времени для эквивалентного кода.Поэтому обработка потоков и сокетов происходит быстрее и быстрее.
Я бы просто попробовал, но рассматриваемый код на python был написан для небольшого кластера компьютеров, на котором я не являюсь администратором.Я спрашиваю здесь, потому что мои попытки Google дали только сравнение с Cython, без загрузки, ласточка и т. Д., И я не хочу, чтобы ошибка администратора об этом, если это вряд ли сработает.
PyPy будет делать заметные улучшения производительности, только если ваш код связан с процессором.PyPy - это самая быстрая реализация Python, которую я знаю, которая работает изначально.Вы можете исследовать некоторые из других реализаций или рассмотреть возможность написания расширений C, если истинный параллелизм потоков является для вас высоким приоритетом.
На самом деле pypy не нуженхорошо в C;Я собираюсь использовать его, потому что сейчас накладные расходы интерпретатора полностью затмевают вычисления, которые я пытаюсь рассчитать.Мне просто нужен pypy, чтобы оказаться рядом с рукописным языком C.
Сокращение разрыва в производительности с помощью C в настоящее время является единственной отличительной особенностью PyPy.Я настоятельно рекомендую вам попробовать.