sys.argv类似于c中main函数中的argv,存储了用户的输入信息。
当你用bash,在shell或者terminal中运行脚本时,你的参数其实传到了sys.argv里面。sys.argv是一个数组,它记录了你在命令行中的输入,并以空格作为分隔符,以字符串形式进行存储。
案例如下:
# test.py
import sys
print(sys.argv)
# bash
>> python test.py 2323
>> ['test.py', '2323']
argparse 将从sys.argv中翟信息,或者让用户自己生成信息以供程序执行,合理运用argparse,能够让你的程序更容易配置和运行,一些常用的arguments如下:
argparse案例如下:
我们使用argparse.ArgumentParse()
生成parser;用parser.add_argument('-key', default='value', type=str, required=False)
添加参数,在parser中以键值对方式存储信息;用args=parser.parse_args()
生成参数并将args返回。
在别的函数中调用则以args.data_path
进行调用。
def parse_args():
import argparse
parser = argparse.ArgumentParser(description="pytorch unet training")
parser.add_argument("--data-path", default="./", help="DRIVE root")
# exclude background
parser.add_argument("--num-classes", default=1, type=int)
parser.add_argument("--device", default="cuda", help="training device")
parser.add_argument("-b", "--batch-size", default=4, type=int)
parser.add_argument("--epochs", default=200, type=int, metavar="N",
help="number of total epochs to train")
parser.add_argument('--lr', default=0.01, type=float, help='initial learning rate')
parser.add_argument('--momentum', default=0.9, type=float, metavar='M',
help='momentum')
parser.add_argument('--wd', '--weight-decay', default=1e-4, type=float,
metavar='W', help='weight decay (default: 1e-4)',
dest='weight_decay')
parser.add_argument('--print-freq', default=1, type=int, help='print frequency')
parser.add_argument('--resume', default='', help='resume from checkpoint')
parser.add_argument('--start-epoch', default=0, type=int, metavar='N',
help='start epoch')
parser.add_argument('--save-best', default=True, type=bool, help='only save best dice weights')
# Mixed precision training parameters
parser.add_argument("--amp", default=False, type=bool,
help="Use torch.cuda.amp for mixed precision training")
args = parser.parse_args()
return args
if __name__ == '__main__':
args = parse_args()
args.data_path
系统环境变量存储在os.environ
中,以dict的键值对的方式实现存储,可以通过访问os.environ
这个字典的键值对来访问系统环境变量。
python的非结构通过not
关键字实现,即c中!=
通过not
实现。
if not os.path.exists("/home/yingmuzhi/_weight"):
os.mkdir("/home/yingmuzhi/_weight")
os.cpu_count()
返回CPU线程数,即number of workers。
# linux下查看cpu核心数
1.查看CPU个数
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
2.查看每个物理CPU含有的核心个数
cat /proc/cpuinfo |grep "cpu cores"|uniq|wc -l
3.查看每个CPU核心含有的线程数
cat /proc/cpuinfo |grep "processor"|wc -l
python 中的问号运算符如下:
batch_size = batch_size if batch_size > 1 else 0
# 也可以直接这么玩,在list当中取最小
minimum = min([2, 3, batch_size if batch_size > 1 else 0, 4])