. . • Что такое PyPy • Библиотеки • Deployment Что такое PyPy ▶ реализация языка Python 2.7 ▶ ведутся работы над Python 3.2 ▶ framework для создания быстрых интерпретаторов ▶ написан на Python! . . . 3
. . • Что такое PyPy • Библиотеки • Deployment Особенности реализации ▶ Just-in- me компилятор ▶ Который генерируется по интерпретатору ▶ Который написан на (R)Python . . . 6
. . • Что такое PyPy • Библиотеки • Deployment List strategies Компактное хранение int, float: expression CPython, G PyPy, G [] 0.004 0.035 range(2**26) 2.04 0.035 [x for x in xrange(2**26)] 2.04 0.548 . . . 9
. . • Что такое PyPy • Библиотеки • Deployment Dict strategies class Point(object): def __init__(self, x, y): self.x, self.y = x, y field = [Point(i, j) for i in xrange(1000) for j in xrange(1000)] CPython, M PyPy, M 370 176 . . . 10
. . • Что такое PyPy • Библиотеки • Deployment Проблемы ▶ warm up me ▶ немного медленнее импорт ▶ иногда run me и stdlib медленнее чем в CPython ▶ C-extensions . . . 12
. . • Что такое PyPy • Библиотеки • Deployment CPython API PyPy эмулирует часть CPython API, и многим библиотекам этого достаточно. Работают: ▶ PIL ▶ MySQL-python ▶ lxml (90%) . . . 14
. . • Что такое PyPy • Библиотеки • Deployment CFFI Новая библиотека от разработчиков PyPy, работает в: ▶ CPython 2.x ▶ CPython 3.x ▶ PyPy 2.0 . . . 16
. . • Что такое PyPy • Библиотеки • Deployment Работа с БД: PostgreSQL ▶ psycopg2: только под CPython ▶ psycopg2-ctypes: PyPy, медленно, не поддерживается ▶ psycopg2-cffi: PyPy, быстро! . . . 18
. . • Что такое PyPy • Библиотеки • Deployment Работа с БД: MySQL ▶ MySQLdb: CPython и PyPy, медленнее под PyPy ▶ mysql-ctypes: не поддерживается . . . 20
. . • Что такое PyPy • Библиотеки • Deployment Установка wget https://.../pypy-2.0.tar.bz2 tar jxf pypy-2.0.tar.bz2 virtualenv . -p pypy-2.0/bin/pypy . . . 23
. . • Что такое PyPy • Библиотеки • Deployment Сборка из исходников wget http://.../release-2.0.tar.bz2 tar jxf release-2.0.tar.bz2 cd release-2.0/pypy/translator/goal python -Ojit translate.py . . . 24