Я пробую Pypy, потому что он показывает впечатляющие тесты по сравнению с CPython. Кроме того, я в основном использую библиотеку Twisted в своем коде. Теперь я могу запустить тестовый скрипт, использующий реактор Twisted, так что я думаю, что мои настройки в порядке. Однако я не знаю, как запустить демонизатор Twisted (twistd) с помощью Pypy.
Запуск Twistd с Pypy
Ответы (1)
Вы можете сделать это явно во время выполнения:
~$ /usr/bin/pypy /usr/bin/twistd ...
Это работает, потому что он специально запускает PyPy и говорит ему начать интерпретацию скрипта twistd.
Или вы можете сделать это постоянно во время установки:
~/Twisted-11.0.0$ /usr/bin/pypy setup.py install
Это работает, потому что distutils (то, что использует setup.py) переписывает строку #! каждого устанавливаемого скрипта, чтобы указать на интерпретатор, используемый для установки. Таким образом, #!/usr/bin/env python в исходном коде установки становится #!/usr/bin/pypy в установленной копии.
person
Jean-Paul Calderone
schedule
25.08.2011
~$ /usr/bin/pypy /usr/bin/twistd ...
Это работало только тогда, когда я устанавливал setuptools с помощью pypy. Если нет, модуль pkg_resources в Twistd не может быть найден.
- person kerrigangster; 08.09.2011
~/Twisted-11.0.0$ /usr/bin/pypy setup.py install
При тестировании Debian это закончилось ошибкой "Слишком много открытых файлов" при извлечении/установке .egg. Мне пришлось использовать более высокий лимит открытых файлов с помощью ulimit.
- person kerrigangster; 08.09.2011
Проблема слишком большого количества открытых файлов описана здесь bugs.pypy.org/issue878 и связана с тем, setuptools работает с файлами. Поскольку pypy не выполняет подсчет ссылок GC, он может не выполнять GC/закрывать файлы намного позже. Это довольно плохо, так как это может случиться при установке скрученной отдельно или в качестве зависимости в pip — особенно когда это зависимость от чего-то еще, это все ломает.
- person fiorix; 13.06.2012