psycopg2cffi (zaktualizowany w 2015 r.)
psycopg2cffi to kolejny zamiennik kompatybilny z psycopg2 i powinien zapewniać najlepszą wydajność PostgreSQL z PyPy. Dodaj to do swojego, settings.py
aby zachować zgodność z obydwoma:
try:
import psycopg2
except ImportError:
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Wiem również, że niektórzy ludzie używają psycopg2-ctypes.
To jest najłatwiejszy sposób; aby zachować zgodność z obydwoma, po prostu dodaj ten kod w swoim Django settings.py
:
try:
import psycopg2
except ImportError:
from psycopg2ct import compat
compat.register()
Przetestowałem to kilka wydań temu; Niestety z mojego doświadczenia wynika, że psycopg2-ctypes neguje niewielki wzrost wydajności zapewniany przez PyPy. Ale YMMV, to zależy od tego, jak przyjazny dla JIT jest twój kod ogólnie i jaki ułamek czasu faktycznie spędzasz na uruchamianiu kodu Pythona. I może od tego czasu PyPy właśnie się poprawił.
i nie sądzę, że psycopg2-ctypes jest jeszcze gotowy na Windows
Nie próbowałem tego, ale ctypes jest niezależny od platformy. AFAICT, musisz tylko upewnić się, że libpq.dll
biblioteka jest ładowalna (znajduje się w katalogu w twojej zmiennej środowiskowej PATH lub katalogu lokalnym) i powinna działać w systemie Windows tak jak w Linuksie.
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ę. Oddział nie był aktualizowany od ponad roku, a moje próby jego zbudowania nie powiodły się. I wydaje się, że błędne jest zakodowanie sterownika PostgreSQL w interpreterze.
Uważam, że nie ma też plików binarnych pypy-postgresql, więc jeśli chcesz go użyć, 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ć, najpierw potrzebujesz ź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ć automagiczny plik zip ze wskazówkami: https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Otwórz wiersz poleceń, przejdź do rozpakowanego katalogu, a następnie do środka pypy/translator/goal
Jeśli masz zainstalowane PyPy, zalecamy użycie go do budowania:
pypy translate.py -Ojit
Inaczej:
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
”