使用Python設(shè)置tmpfs來(lái)加速項(xiàng)目的教程
對(duì)我當(dāng)前工程進(jìn)行全部測(cè)試需要花費(fèi)不少時(shí)間。既然有 26 GB 空閑內(nèi)存,為何不讓其發(fā)揮余熱呢? tmpfs 可以通過(guò)把文件系統(tǒng)保存在大內(nèi)存中來(lái)加速測(cè)試的執(zhí)行效率。
但優(yōu)點(diǎn)也是缺點(diǎn),tmpfs 只把結(jié)果保存在內(nèi)存中,所以你必須自己編寫(xiě)腳本來(lái)把結(jié)果回寫(xiě)到磁盤(pán)上進(jìn)行保留。而且這些腳本必須良好書(shū)寫(xiě)和執(zhí)行,否則就要失去部分或全部的工作成果了。
一種常見(jiàn)的方法是直接在tmpfs文件夾中工作,然后把工作成果備份到磁盤(pán)上的一個(gè)文件夾中。當(dāng)您的機(jī)器啟動(dòng)時(shí)你從那個(gè)備份文件夾恢復(fù)tmpfs文件夾。啟動(dòng)之后用cron同步tmpfs文件夾和磁盤(pán)文件夾。
我發(fā)現(xiàn)這個(gè)設(shè)置有點(diǎn)復(fù)雜容易出錯(cuò)。在啟動(dòng)的時(shí)候,或者對(duì)于crom,我從沒(méi)有真正的相信?,F(xiàn)在我用一種簡(jiǎn)單得多的設(shè)置,根本不用cron。
在我的機(jī)器上運(yùn)行一個(gè)單項(xiàng)測(cè)試,使用IDE并發(fā)布于web服務(wù)器,其性能通常是合理的,只有運(yùn)行全部測(cè)試需要許多時(shí)間。
我發(fā)現(xiàn)最佳之處是在磁盤(pán)上設(shè)置一個(gè)workspace,與/dev/shmand目錄下運(yùn)行所有測(cè)試的tmpfs同步。這或多或少使我的設(shè)置無(wú)需改變,并消除了可能松散的工作,這些僅僅是因?yàn)槲以谡_設(shè)置方面太垃圾了。
性能提升的結(jié)果是合理的:
$ nosetests && run_tests.py ........................................................................................................................................................................................................................................................ ---------------------------------------------------------------------- Ran 248 tests in 107.070s OK ........................................................................................................................................................................................................................................................ ---------------------------------------------------------------------- Ran 248 tests in 19.423s OK
現(xiàn)在比原來(lái)提高了 5 倍速度。
使用 python 來(lái)進(jìn)行設(shè)置非常簡(jiǎn)單:
#!/bin/bash -e
WORK=src/py
LOG=$(pwd)/test.log
TARGET=$(hg root)
SHADOW=/dev/shm/shadow/$TARGET
date > $LOG
mkdir -p $SHADOW
cd $SHADOW
rsync --update --delete --exclude=".*" --exclude=ENV --archive $TARGET ./..
if [ ! -d ENV ]
then
virtualenv ENV
fi
. ENV/bin/activate
cd $WORK
python setup.py develop >> $LOG
nosetests $* | tee -a $LOG
exit ${PIPESTATUS[0]}
我只要重復(fù)同步到/dev/shm目錄,設(shè)置測(cè)試環(huán)境(virtualenv and python setup.PY)和運(yùn)行測(cè)試(nosetests)。
在tmpfs文件夾里仍可用命令行運(yùn)行單個(gè)測(cè)試。也可以把這個(gè)從你的IDE中踢走,但你會(huì)失去你的測(cè)試運(yùn)行和調(diào)試的能力。如我之前所說(shuō),我現(xiàn)在不需要這些。
我希望我對(duì)tmpfs的這個(gè)變通使用能幫助你建立一個(gè)更快速的開(kāi)發(fā)環(huán)境,而無(wú)須遭受所有的腳本麻煩。
相關(guān)文章
Python創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)
下面小編就為大家?guī)?lái)一篇Python創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
一文詳述 Python 中的 property 語(yǔ)法
這篇文章主要介紹了一文詳述 Python 中的 property 語(yǔ)法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
python+OpenCV人臉識(shí)別考勤系統(tǒng)實(shí)現(xiàn)的詳細(xì)代碼
作為一個(gè)基于人臉識(shí)別算法的考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)教程,以下內(nèi)容將提供詳細(xì)的步驟和代碼示例。本教程將使用 Python 語(yǔ)言和 OpenCV 庫(kù)進(jìn)行實(shí)現(xiàn),需要的朋友可以參考下2023-05-05
python爬蟲(chóng)之線程池和進(jìn)程池功能與用法詳解
這篇文章主要介紹了python爬蟲(chóng)之線程池和進(jìn)程池功能與用法,結(jié)合實(shí)例形式分析了Python基于線程池與進(jìn)程池的爬蟲(chóng)功能相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2018-08-08
selenium+python自動(dòng)化測(cè)試之環(huán)境搭建
這篇文章主要介紹了selenium+python自動(dòng)化測(cè)試之環(huán)境搭建,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python區(qū)塊鏈創(chuàng)建Block Class教程
這篇文章主要為大家介紹了Python區(qū)塊鏈創(chuàng)建Block Class教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python優(yōu)化列表接口進(jìn)行分頁(yè)示例實(shí)現(xiàn)
最近,在做測(cè)試開(kāi)發(fā)平臺(tái)的時(shí)候,需要對(duì)測(cè)試用例的列表進(jìn)行后端分頁(yè),在實(shí)際去寫(xiě)代碼和測(cè)試的過(guò)程中,發(fā)現(xiàn)這里面還是有些細(xì)節(jié)的,故想復(fù)盤(pán)一下2021-09-09
Python接口自動(dòng)化測(cè)試框架運(yùn)行原理及流程
這篇文章主要介紹了Python接口自動(dòng)化測(cè)試框架運(yùn)行原理及流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
pandas求平均數(shù)和中位數(shù)的方法實(shí)例
pandas對(duì)象擁有一組常用的數(shù)學(xué)和統(tǒng)計(jì)方法,大部分都屬于約簡(jiǎn)和匯總統(tǒng)計(jì),這篇文章主要給大家介紹了關(guān)于pandas求平均數(shù)和中位數(shù)的相關(guān)資料,需要的朋友可以參考下2021-08-08
pandas中遍歷dataframe的每一個(gè)元素的實(shí)現(xiàn)
這篇文章主要介紹了pandas中遍歷dataframe的每一個(gè)元素的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

