psycopg2cffi (aktualizacja 2015)
psycopg2cffi to kolejny zamiennik kompatybilny z psycopg2 i powinien zapewnić najlepszą wydajność PostgreSQL z PyPy. Dodaj to do swojego settings.py
zachować zgodność z obydwoma:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Wiem też, że niektórzy ludzie używają psycopg2-ctypes.
To najłatwiejszy sposób; aby zachować zgodność z obydwoma, po prostu dodaj ten kod w swoim settings.py
Django :
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Testowałem to kilka wydań temu; niestety z mojego doświadczenia wynika, że psycopg2-ctypes neguje niewielkie przyrosty wydajności zapewniane przez PyPy. Ale YMMV, zależy to od tego, jak ogólnie Twój kod jest przyjazny dla JIT i jaki ułamek czasu faktycznie spędzasz na uruchamianiu kodu Pythona. I może PyPy właśnie się poprawił od tego czasu.
i nie sądzę, aby psycopg2-ctypes był jeszcze gotowy na Windows
Nie próbowałem tego, ale ctypes jest niezależne od platformy. POTRZEBUJESZ, że musisz tylko upewnić się, że plik libpq.dll
biblioteka jest ładowalna (znajduje się w katalogu w zmiennej środowiskowej PATH lub katalogu lokalnym) i powinna działać w systemie Windows, tak jak w systemie Linux.
pypy-postgresql
Widzę, że Alex Gaynor stworzył widelec PyPy o nazwie pypy-postgresql.
Nie sądzę, żeby to był dobry wybór na dłuższą metę. Gałąź nie była aktualizowana od ponad roku, a moje próby jej zbudowania nie powiodły się. A mimo to zakodowanie na stałe sterownika PostgreSQL w interpreterze wydaje się niewłaściwe.
Uważam, że nie ma też binariów pypy-postgresql, więc jeśli chcesz z niego korzystać, musisz sam zbudować całą gałąź PyPy. Nie dla osób o słabym sercu:zajmuje to kilkadziesiąt minut i maszyna z co najmniej 4 GB pamięci. (Oficjalne instrukcje:http://pypy.org/download.html#building-from-source)
Aby zbudować, potrzebujesz najpierw źródła. Jeśli masz zainstalowany Mercurial, możesz po prostu hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Jeśli nie, możesz pobrać automatyczny plik zip „tip”:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Otwórz wiersz poleceń, przejdź do zdekompresowanego katalogu, a następnie do pypy/translator/goal
Jeśli masz zainstalowane PyPy, zaleca się użycie tego do budowania:
pypy translate.py -Ojit
W przeciwnym razie:
python translate.py -Ojit
Niestety na tym kończy się moja wiedza. Otrzymuję błąd „BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"