成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

改用pypy運行django項目

_Zhao / 2729人閱讀

摘要:最近在研究編程,寫了個,試了試,比用流量大了好幾倍,簡直嚇死寶寶了。但是項目就是跑不起來,一直報的錯誤,說是無此包。

最近在研究socket編程,寫了個echo server,試了試pypy,比用python2.7流量大了好幾倍,簡直嚇死寶寶了。本地跑網(wǎng)絡相關的程序基本沒有擁塞,所以主要就相當于測試CPU了,感覺主要是節(jié)省了線程和循環(huán)開銷,可能是pypy的某種優(yōu)化吧

無事時我便自己嘗試將在公司的項目代碼在本地改用pypy跑,毫無疑問會碰到一些困難,但這比從頭開始用pypydjango項目還是受益得多。官方號稱快大概7倍(大誤)

首先是包的問題,平常裝的包都在py2的路徑下,所以直接在pypysite-packages下建一個.pth文件把py2的包拿來用。進入pypy的包文件夾

/usr/local/Cellar/pypy/4.0.1/libexec/site-packages

新建一個文件叫external.pth,加入兩行

/Library/Python/2.7/site-packages
/usr/local/lib/python2.7/site-packages

這樣確實可以使用部分用pure python寫的包了,但是有些用clang寫的就不行了,比如MySQLdb(mysql-python),谷歌了一下,答案千奇百怪,看的官方說是1.2.4c1及以上可以運行。但是項目就是跑不起來,一直報import _mysql的錯誤,說是無此包。查看發(fā)現(xiàn)該庫只有_mysql.so文件。
對比著看,如果用py2的話,PyCharm會由_mysql.so生成一個_mysql.py作為緩存,然后就可以使用MySQLdb了,但是用pypy跑的時候生成該文件失敗。PyCharm中在Binary Skeletons下有一個.blacklist的文件記錄有解析失敗的.so文件

我把由PyCharm生成的_mysql.py文件復制一份到py2下的MySQLdb包里,讓pypy直接使用它,這樣此處就不再報錯了,但是其它用了clang的還是報錯,這樣復制不是辦法。繼續(xù)在網(wǎng)上研究解決方法,然后發(fā)現(xiàn)這種用了C語言帶.so文件的包不能用拿來主義,通常要通過CFFI的接口來調用(有些包可以直接用),普通C語言寫的沒有這種接口當然是不行的。另外,用ctypes寫的是兼容Cpython和PyPy的

因此安裝給pypy用的包最好用其自己的方式,和cpython差不多

pip_pypy

easy_install_pypy

pypy setup.py intall

這樣一個個地裝包,不過有的還是有問題,比如Crypto,py2裝的包是Crypto,但是pypy裝的包是crypto,但里面文件import的時候還是用的Crypto,大小寫不對。
裝完需要的包之后,運行實測,選擇一個比較復雜的網(wǎng)頁,加載時間由接近1.9s減少到1s內,確實有非常明顯地提高

后來還發(fā)現(xiàn)一個問題,在上述過程中把由PyCharm生成的_mysql.py放到了py2的MySQLdb下,可以讓pypy運行,但再讓py2運行則會報錯,需要移除

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/37780.html

相關文章

  • python入門 django入門 (一)

    摘要:本人年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學習,記錄自己的學習記錄。 本人java10年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學習python,記錄自己的學習記錄。后面也...

    hzc 評論0 收藏0
  • Django部署中學到的

    摘要:修改的源的配置文件在文件內容如下豆瓣源的網(wǎng)址是只需將替換為即可。所以這次使用萬能的重裝大法,來上線這個博客網(wǎng)站。 修改pip的源 pip 的配置文件在 ~/.pip/pip.conf 文件內容如下: [global] index-url = http://mirrors.tencentyun.com/pypi/simple trusted-host = mirrors.tencen...

    CloudwiseAPM 評論0 收藏0
  • Django部署中學到的

    摘要:修改的源的配置文件在文件內容如下豆瓣源的網(wǎng)址是只需將替換為即可。所以這次使用萬能的重裝大法,來上線這個博客網(wǎng)站。 修改pip的源 pip 的配置文件在 ~/.pip/pip.conf 文件內容如下: [global] index-url = http://mirrors.tencentyun.com/pypi/simple trusted-host = mirrors.tencen...

    bergwhite 評論0 收藏0
  • 細數(shù)Python三十年技術演變史——萌發(fā)于小眾,崛起于AI

    摘要:作者宋天龍來源科技大本營導語一切都始于年的那個圣誕節(jié),的誕生并不算恰逢其時,它崛起充滿了機遇巧合,也有其必然性。年的圣誕節(jié),開始編寫語言的編譯器。年發(fā)布的標志著的框架基本確定。年月發(fā)布了系列的最后一個版本,主版本號為。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龍來源 | AI科技大本營 ...

    tuniutech 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<