sys.argv和argparse和os.environ

sys.argv

sys.argv类似于c中main函数中的argv,存储了用户的输入信息。

当你用bash,在shell或者terminal中运行脚本时,你的参数其实传到了sys.argv里面。sys.argv是一个数组,它记录了你在命令行中的输入,并以空格作为分隔符,以字符串形式进行存储。

sys.argv和argparse和os.environ_第1张图片

案例如下:

# test.py
import sys
print(sys.argv)

# bash
>> python test.py 2323
>> ['test.py', '2323']

请添加图片描述

argparse.py 使用

argparse 将从sys.argv中翟信息,或者让用户自己生成信息以供程序执行,合理运用argparse,能够让你的程序更容易配置和运行,一些常用的arguments如下:

sys.argv和argparse和os.environ_第2张图片

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

系统环境变量存储在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()

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 中的?问号运算符

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])

你可能感兴趣的:(python,开发语言)