三種常用的方式
如果在執行python指令碼時需要傳入一些引數,例如gpus與batch_size,可以使用如下三種方式。
sys.ar**
sys模組是很常用的模組, 它封裝了與python直譯器相關的資料,例如sys.modules裡面有已經載入了的所有模組資訊,sys.path裡面是pythonpath的內容,而sys.ar**則封裝了傳入的引數資料。
使用sys.ar**接收上面第乙個命令中包含的引數方式如下:
import sys
gpus = sys.ar**[1]
#gpus = [int(gpus.split(','))]
batch_size = sys.ar**[2]
print gpus
print batch_size12
3456
argparse
import argparse
parser = argparse.argumentparser(description='manual to this script')
parser.add_argument('--gpus', type=str, default = none)
parser.add_argument('--batch-size', type=int, default=32)
args = parser.parse_args()
print args.gpus
print args.batch_size12
3456
7需要注意的是,指令碼執行命令python script.py -gpus=0,1,2 --batch-size=10中的--batch-size會被自動解析成batch_size.
parser.add_argument 方法的type引數理論上可以是任何合法的型別, 但有些引數傳入格式比較麻煩,例如list,所以一般使用bool, int, str, float這些基本型別就行了,更複雜的需求可以通過str傳入,然後手動解析。bool型別的解析比較特殊,傳入任何值都會被解析成true,傳入空值時才為false
python script.py --bool-val=0 # args.bool_val=true
python script.py --bool-val=false # args.bool_val=true
python script.py --bool-val= # args.bool_val=什麼都不寫false12
3通過這個方法還能指定命令的幫助資訊。具體請看api文件:
python script.py -gpus=0,1,2 --batch_size=10
1對應的python**為:
def main(_):
print flags.gpus
print flags.batch_size
ccl命令列執行lisp指令碼
最近在學習lisp,lisp作為傳說中最古老的語言之一,fp的經典語言之一,對我這種喜歡瞎研究的人來說,是很有吸引力滴。不過,我要說的是,lisp可不像python這麼方便快捷,不同dialect之間差別還是挺大的,就執行乙個lisp指令碼,似乎都不是那麼簡單的事情。對於被python慣壞了了的我來...
Jmeter命令列執行jmx指令碼
簡介 使用非 gui 模式,即命令列模式執行 jmeter 測試指令碼能夠大大縮減所需要的系統資源。本文介紹windows下以命令列模式執行jmeter指令碼的方法。1.1.命令介紹 jmeter壓力測試命令列啟動指令碼 安裝路徑 jmeter n t 指令碼路徑 九牧登入.jmx l log路徑 ...
python命令列執行手記
python指令碼完成後,一般除錯我們直接在ide中執行,但是正式執行的時候,我們不可能總是開啟ide來執行吧。所以我們一般通過命令列來執行指令碼。但是在執行中發現ide執行沒有問題,可是在命令列執行就會報錯 modulenotfounderror no module named 需要在執行的py檔...