首页 > 其他分享 >详解argparse 模块

详解argparse 模块

时间:2023-04-19 17:40:09浏览次数:39  
标签:argparse py -- args parser default 详解 参数 模块

在 Python 中,可以使用 argparse 模块来控制代码的参数。argparse 可以读取命令行输入的参数,并根据定义的规则进行解析和处理。

控制变量取值

以下是一个简单的例子,说明如何在 Python 中使用 argparse:

import argparse

parser = argparse.ArgumentParser(description='PyTorch Example')

# 添加参数
parser.add_argument('--batch-size', type=int, default=64, metavar='N',
                    help='input batch size for training (default: 64)')
parser.add_argument('--epochs', type=int, default=10, metavar='N',
                    help='number of epochs to train (default: 10)')
parser.add_argument('--lr', type=float, default=0.01, metavar='LR',
                    help='learning rate (default: 0.01)')
parser.add_argument('--momentum', type=float, default=0.5, metavar='M',
                    help='SGD momentum (default: 0.5)')
parser.add_argument('--no-cuda', action='store_true', default=False,
                    help='disables CUDA training')

args = parser.parse_args()

print(args.batch_size)  # 输出 batch size 参数
print(args.epochs)  # 输出 epochs 参数
print(args.lr)  # 输出 learning rate 参数
print(args.momentum)  # 输出 momentum 参数
print(args.no_cuda)  # 输出是否使用 CUDA 参数

在上面的代码中,我们首先导入 argparse 模块,并创建了一个 argparse.ArgumentParser 的实例。我们使用 add_argument 方法添加了一些参数。例如,--batch-size 表示要输入的批次大小,--epochs 表示要训练的 epoch 数量等等。

接下来,我们使用 parse_args() 方法解析了命令行输入的参数,并将它们存储在 args 变量中。然后,我们可以通过访问 args 的属性来获得特定的参数值。

在运行上述代码时,可以使用如下命令来指定参数:

python my_program.py --batch-size 128 --epochs 20 --lr 0.1 --momentum 0.9 --no-cuda

这将使用 batch size 为 128、训练 epoch 数为 20学习率为 0.1SGD momentum 为 0.9,以及禁用 CUDA 的参数运行代码。

调用

假设有两个Python文件A.py和B.py,需要在A.py中设置参数,然后在B.py中使用这些参数。以下是一个示例:

A.py:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--learning_rate', type=float, default=0.001, help='learning rate for optimizer')
parser.add_argument('--batch_size', type=int, default=32, help='batch size for training')
parser.add_argument('--num_epochs', type=int, default=10, help='number of epochs for training')
args = parser.parse_args()

# 将args作为模块的变量导入
import sys
sys.modules[__name__].__dict__.update(args.__dict__)

B.py:

from A import *

print('Learning rate:', learning_rate)
print('Batch size:', batch_size)
print('Number of epochs:', num_epochs)

在上面的例子中,A.py中使用argparse设置了三个参数,然后将这些参数作为模块的变量导入。在B.py中,直接从A模块中导入这些变量并使用它们。

要运行这些文件,只需在命令行中运行python A.py,然后在B.py中导入并使用这些参数。

请注意,如果需要在其他文件中使用这些参数,则需要先导入A.py,然后才能使用这些参数。否则,将无法找到这些变量。

标签:argparse,py,--,args,parser,default,详解,参数,模块
From: https://blog.51cto.com/guog/6207008

相关文章

  • 浪潮信息等企业评审通过OTII-E模块化服务器技术规范V1.0
    ■■ 近期,ODCC服务器工作组组织线上评审会议,评审通过了《OTII-E模块化服务器技术规范V1.0》。评审会议上,浪潮信息、英特尔、中国信通院等相关单位的近50位专家参与了在线评审,深入讨论目前OTII系列标准发展的关键问题、行业价值和发展方向。OTII-E是OTII系列标准中的最新技术规范,将......
  • Linux最常见的三个应用领域详解!
    Linux应用领域有很多,其中最为主要的就是这三种:IT服务器Linux系统应用领域、嵌入式Linux系统应用领域和个人桌面linux应用领域,接下来我们来看看具体的内容介绍。与Windows操作系统软件一样,Linux也是一个操作系统软件。但与Windows不同的是,Linux是一套开放源代码程序的,并可以......
  • sql server的cube操作符使用详解[转]
    sqlserver的cube操作符使用详解cube操作符  要使用cube,首先要了解groupby  其实cube和rollup区别不太大,只是在基于groupby子句创建和汇总分组的可能的组合上有一定差别,  cube将返回的更多的可能组合。如果在groupby子句中有n个列或者是有n个表达式的话,  sqlserv......
  • 使用约束详解[转]
    使用约束1.使用primarykey约束 其值能唯一的标识表中的每一行。这样的一列或多列成为表的主键,通过它可强制表的实体完整性。 job_idintprimarykeyclustered emp_idempidconstraintpk_emp_idprimarykeynonclustered2.使用foreign......
  • Git使用详解
    一、安装指引在Mac上安装Git之前,可以先使用git--version来查看一下是否安装了Git,因为Mac系统可能自带了Git,或者在你安装XCode(或者XCode的命令行工具)时,可能已经安装了Git。1.1安装如果尚未安装Git,或者已安装的Git版本过低,这里我们可以去Git官网https://git-scm.com进行安装......
  • 由浅入深详解四种分布式锁
    在多线程环境下,为了保证数据的线程安全,锁保证同一时刻,只有一个可以访问和更新共享数据。在单机系统我们可以使用synchronized锁或者Lock锁保证线程安全。synchronized锁是Java提供的一种内置锁,在单个JVM进程中提供线程之间的锁定机制,控制多线程并发。只适用于单机环境下的并发控制......
  • [PLC]三菱Q系列MODBUS通信(QJ71C24N串口模块)
    三菱Q系列MODBUS通信(QJ71C24N串口模块)CPUQ01通信模块:QJ71C24N通信协议:MODBUSRTU编程软件:GXWORK2 打开GXWORK2,新建工程,然后右键点击智能功能模块 安装位置根据硬件实际情况设定,此处注意起始XY地址,后面会用到。     双击开关设置 CH2设置如下,通信协议......
  • Linux的操作系统网络模块
    Linux操作系统的网络模块是负责网络通信的核心部分。它通过实现各种协议和算法,使得计算机能够在网络中进行数据交换和通信。网络模块主要包括以下几个方面的功能:(1)IP协议栈:负责处理网络层的数据包,实现IP地址的分配、路由选择等功能。IP协议栈是网络模块中最基本的部分,它负责处理......
  • UD PCIe-404全国产信号处理模块V7
    UDPCIe-404全国产化信号处理模块为标准PCIe全高的结构,对外支持PCIe3.0×8通信,也可以采用千兆以太网(RJ45连接器)、万兆以太网(或RapidIO、Aurora,QSFP+连接器)接口进行通信,支持多板级联,模块为100%国产化设计(同时也兼容进口器件)。FPGA芯片可选上海复旦微或深圳国微公司的V7-690T,两组DD......
  • 深度学习语义分割篇——FCN原理详解篇
    深度学习语义分割篇——FCN原理详解篇写在前面  在过往的博客中,我已经介绍了几种经典神经网络(VGG、GoogleNet、Resnet等等)在图像分类上的应用,这些都是非常基础却重要的内容,大家务必要掌握,不了解的可以进入个人主页搜索了解详情。......