首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用freeze_support从冻结的sys.argv调用中获取真正的参数列表?

在Python中,freeze_support是multiprocessing模块中的一个函数,用于在Windows平台上支持使用py2exe或者pyinstaller等工具将Python脚本打包成可执行文件时,正确获取命令行参数列表。

当使用这些工具将Python脚本打包成可执行文件后,sys.argv中的参数列表会被冻结,无法直接通过sys.argv获取真正的参数列表。这时就可以使用freeze_support函数来解决这个问题。

具体使用freeze_support的步骤如下:

  1. 导入multiprocessing模块中的freeze_support函数:
代码语言:txt
复制
from multiprocessing import freeze_support
  1. 在主程序的入口处调用freeze_support函数:
代码语言:txt
复制
if __name__ == '__main__':
    freeze_support()
  1. 在调用freeze_support函数之后,可以通过multiprocessing模块中的current_process函数的args属性来获取真正的参数列表:
代码语言:txt
复制
from multiprocessing import current_process

args = current_process().args

这样就可以获取到真正的参数列表了。

使用freeze_support的优势是可以解决在Windows平台上使用py2exe或者pyinstaller等工具打包Python脚本时,无法正确获取命令行参数列表的问题。

应用场景:当需要将Python脚本打包成可执行文件,并且需要获取命令行参数列表时,可以使用freeze_support来解决参数列表被冻结的问题。

推荐的腾讯云相关产品:腾讯云函数(Serverless Cloud Function)是一种无服务器计算服务,可以帮助开发者更轻松地构建和运行云端应用程序。腾讯云函数支持Python语言,并且可以直接获取真正的参数列表。

产品介绍链接地址:https://cloud.tencent.com/product/scf

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python Windows下分布式进程坑(分布式进程一个简单例子)

#windows 运行分布式进程需要先启动 freeze_support() #freeze_support()"冻结"为时生成 Windows 可执行文件 #原因是Windows...没有直接fork() #Window是通过创建一个新过程代码,在子进程运行来模拟fork() #由于代码是在技术无关进程运行,所以它必须在运行之前交付...#它传递方式首先是被pickle,然后通过管道原始进程发送到新进程 #另外,这个新进程被告知它必须运行通过管道传递代码通过传递 #freeze_support()...multiprocessing.managers import BaseManager #创建QueueManager class QueueManager(BaseManager): pass #该Manager网络上获取...= m.get_task_queue() result = m.get_result_queue() #task_queue获取任务 记过写入result_queue for i in range(

2.1K50

使用命令行界面运行Python脚本

我们可以在命令行上键入不同参数并将这些参数传递到脚本,而不是每次运行脚本时都更改.py文件代码。因此,使用CLI是非常灵活和方便,而且,黑屏启动程序会让你更酷,更像一个真正程序员。...下面进入有趣部分,我们希望在运行程序时从命令行传递这三个变量。 步骤4:从命令行解析参数 从命令行解析参数最简单方法是使用sys.argv,它是传递给Python脚本命令行参数列表。...让我们看看如何通过在命令行运行以下简单脚本来使用sys.argv。...我们可以定义程序需要参数,argparse将找出如何sys.argv解析这些参数。该库还自动生成帮助和用法消息。 首先,我们实例化ArgumentParser()对象。...在命令行,键入pdf_cli_eg.py -h。这将显示帮助消息,包括如何使用程序CLI以及参数说明。 图4

2.8K30

【测试开发】python系列教程:argparse 模块

在命令行程序,经常需要获取命令行参数。...Python内置sys.argv保存了完整参数列表,我们可以从中解析出需要参数: # tesone1.py import sys print(sys.argv) source = sys.argv...通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。这些信息在 parse_args() 调用时被存储在ArgumentParser实例化对象,以供后续使用。...store_const:表示赋值为const; append:将遇到值存储成列表,也就是如果参数重复则会保存多个值; append_const:将参数规范定义一个值保存到一个列表; count:存储遇到次数...args = parser.parse_args() 在脚本,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动 sys.argv 确定命令行参数

16610

python网络爬虫(3)python爬虫遇到各种问题(python版本、进程等)

Windows没有fork调用,因此,multiprocessing需要“模拟”出fork效果,父进程所有Python对象都必须通过pickle序列化再传到子进程去。...pickling序列化对匿名函数不支持,导致创建进程失败 解决方案: 修改匿名函数为普通函数 为了实现windows平台对于python多进程实现要求,并区分是自身运行还是被调用导入而运行,加入if...() win_run() PermissionError: [WinError 5] 拒绝访问 这是在进程使用过程windows系统下出现问题。...args=(url_q,conn_q,url,)) 处理方案:参阅:https://blog.csdn.net/weixin_41935140/article/details/81153611 将创建进程函数参数涉及到自定义类...,修改到函数内部而不是作为参数传递。

1.3K20

Python命令行参数

python可以使用 sys 模块 sys.argv 命令来获取命令行参数,其中返回参数是一个列表在实际开发,我们一般都使用命令行来执行 python 脚本使用终端执行python文件命令:python...如果不想获取到文件名,那么完全可是使用切片方式,因为命令行返回结果是一个列表,完全可以使用切片方式。...index.py 1 2 3 4 5# 在终端一次输入多个参数时候,中间不需要使用逗号隔开sys.argv 只提供了比较简单命令行参数获取方式,并没有提供命令行提示。...该程序定义了他需要参数,argparse并将找出如何解析这些参数 sys.argv。该argparse模块还会自动生成帮助和用法消息,并在用户给出程序无效参数时发生异常。...以下示例是没有标志位调用 match 函数# 测试 re 模块关于正则表达式方法import resaying: str = 'life is short, i use Python'# 使用 re.match

1.6K20

Python基础教程(四)

sys.argv #获取命令行参数列表,第一个元素是程序本身 sys.exit(n) #退出Python程序,exit(0)表示正常退出。...就足够了 sys.argv是一个脚本执行参数列表列表第一个元素是脚本名称,第二个元素开始才是真正参数。...这个方法在新建对象恰好要被返回使用之前被调用。 del(self) 恰好在对象要被删除之前调用。 str(self) 在我们对对象使用print语句或是使用str()时候调用。...getitem(self,key) 使用x[key]索引操作符时候调用。 len(self) 对序列对象使用内建len()函数时候调用。...该方法在函数需要获取可变数量参数时候特别有用。 由于在args变量前有*前缀,所有多余函数参数都会作为一个元组存储在args。如果使用是**前缀,多余参数则会被认为是一个字典键/值对。

71830

Python3 命令行参数解析

sys.argv用法 sys.argv[] 获取是命令行参数列表sys.argv[0] 表示代码本身文件路径,所以命令行参数sys.argv[1] 开始。...len(sys.argv获取 是命令行参数个数。...,这里可用到 argparse 模块,它是 Python 内置一个用于命令选项与参数解析模块,通过在程序定义好我们需要参数,argparse 将会 sys.argv 解析出这些参数,并自动生成帮助和使用信息...定位参数、可选参数和混合使用参数 使用 parse_args() 解析添加参数 理解 add_argument() 方法 add_argument() 方法定义了如何解析命令行参数:  ArgumentParser.add_argument...,将参数规范定义一个值保存到一个列表; count,存储遇到次数;此外,也可以继承 argparse.Action 自定义参数解析; nargs – 应该读取命令行参数个数,可以是具体数字,或者是

1.2K11

Python sys.argv 是个什么鬼?

sys.argv[] 说白了就是一个程序外部获取参数桥梁 ,我们外部取得参数可以是多个 ,所以获得是一个列表(list),也就是说sys.argv其实可以看作是一个列表 ,所以才能用[]提取其中元素...本质是一个列表 可以利用type()方法查看类型 : import sys print(type(sys.argv)) print(len(sys.argv)) 命令窗口调用得到结果如下 ,证实为列表类型...列表元素来自外部输入 3. 外部输入1开始 4. argv[0] 表示本身代码文件路径 这里 ,创建一个test_argv.py 文件 ,在命令窗口调用并输入需要参数 。...import sys import os os.system(sys.argv[1]) 在命令窗口调用并输入参数参数为要打开文件名),如下 。...这里代码参数sys.argv[1],即外部输入第一个参数test_argv.txt ,如果是sys.argv[0] ,则打开是代码本身。 ?

99730

Python入门到放弃 | 超简单 跟我学(八)

如果使用以前版本 Windows,则基本说明是相同,不过某些步骤过程可能略有不同。 第八讲 模 块 你已经看到了如何在你程序重复使用代码 —— 只需定义一次函数就可以对其重复调用了。...另一种方法就是用编写 Python 解释器语言来编写模块。例如,你可以用 C 语言 来写模块,在使用标准 Python 解释器中进行编译时,这些模块会 Python 代码调用。...具体来说, sys.argv 包含 命令行参数 列表,即那些使用命令行传递给程序参数。 如果使用 IDE 编写和运行这些程序,请查找在菜单为程序指定命令行参数方法。...Python 会把这些参数储存在 sys.argv 变量里以供后续使用。 记住,当前运行模块名总储存在 sys.argv 列表第一个元素。...注意到 Python ,数组索引 0 开始计数而不是 1 开始。 sys.path 是模块导入时要搜索目录列表

83810

Python黑帽编程2.6 模块

首先,我们将学习如何使用标准库模块。 2.6.1 调用SYS模块 先上代码: #!...如果找到了这个文件,这个模块主块语句将被运行,然后这个模块将能够被你使用。注意,初始化过程仅在我们第一次输入模块时候进行。 sys.argv变量是一个字符串列表,包含了命令行参数列表。...下面我们保存这段代码为module_sys.py,终端使用python来运行,并输入参数“test argument”,如下图所示: ?...图2 2.6.2 FROM..IMPORT语句 上面的示例我们通过sys.argv方式来获取argv变量内容,那如果我们想直接调用argv,就可以获取变量内容或进行方法调用,该如何做呢?...如果不提供参数,它返回当前模块定义名称列表。 先看下面的代码: #!

969100

python之线程、进程

进程至少包含一个线程   python线程和进程均是使用操作系统原生线程与进程   原生进程与原生线程是由操作系统维护与管理   python多线程是伪多线程,实际上同一时间只有一个线程在运行...如何提高效率?    ...列表取一个数据,相当于是复制了一份列表数据,列表元数据并没有被改动     队列取一个数据,取走后队列中就没了有这个被取数据   生产者消费者模型: #!...每个子进程都是由其父进程启动   进程间通讯:    不同进程间内存是不共享,要想实现两个进程间数据交换,可以使用以下方法:   1、Queues     使用方法与threading里queue...进程池   进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列没有可供使用进程,那么程序就会等待,直到进程池中有可用进程为止。

35210

挑战30天学完Python:Day12 模块Modules

功能 sys.argv 获取传递给Python脚本命令行参数列表列表索引 0 始终是文件名,后边1开始真正命令行参数。...例子代码 script.py 文件: import sys # print(sys.argv[0], argv[1],sys.argv[2]) # 命令行执行将打印: 文件名 参数1 参数2 print...format(sys.argv[1], sys.argv[2])) 现在让我们来看看,在命令行执行写这个脚本将如何: python script.py Qi 30DaysOfPython 执行结果...声明一个名为 user_id_gen_by_user 函数。它不设置参数,但它使用input() 接受两个输入。其中一个输入是字符数量,第二个输入是应该生成id数量。...shuffle_list,它接受一个列表作为参数,并返回一个打乱列表

17830

网络工程师学Python-23-命令行输入input()

图片基本用法要使用input()函数获取用户输入,只需在代码调用该函数即可:name = input("请输入您姓名:")print("您好," + name + "!")...命令行参数除了使用input()函数从命令行接收输入外,Python还提供了一种从命令行获取参数方式。...该模块包含一个名为argv列表,其中存储了所有的命令行参数。...例如,下面的代码演示了如何获取程序名称和所有的命令行参数:import sysprint("程序名称:", sys.argv[0])print("命令行参数:", sys.argv[1:])在这个代码...然后我们使用print()函数输出程序名称(存储在sys.argv列表第一个元素)和所有的命令行参数(存储在sys.argv列表其余元素)。

82470

python笔记26-命令行传参sys.argv

本篇就来讲下如何在python代码里加入命令行参数,并且其它功能,能调用这个参数。...argv获取参数 Python 也可以所用 sys sys.argv获取命令行参数sys.argv 是命令行参数列表。 len(sys.argv) 是命令行参数个数。...参数列表: ['test.py', 'arg1', 'arg2', 'arg3'] getopt模块 getopt模块是专门处理命令行参数模块,用于获取命令行选项和参数,也就是sys.argv。...options: 以列表格式定义,options后冒号(:)表示该选项必须有附加参数,不带冒号表示该选项不附加参数。...该方法返回值由两个元素组成: 第一个是 (option, value) 元组列表。 第二个是参数列表,包含那些没有’-‘或’—‘参数

1.9K40

Python分布式进程

举个例子:做爬虫程序时,常常会遇到这样场景,我们想抓取图片链接地址,将链接地址存放到Queue,另外进程负责Queue读取链接地址进行下载和存储到本地。...启动第三步建立实例,即启动管理manager,监管信息通道 通过管理实例方法获得通过网络访问Queue对象,即再把网络队列实体化成可以使用本地队列....使用QueueManager 注册用于获取Queue方法名称,任务进程只能通过名称来在网络上获取Queue 连接服务器,端口和验证口令注意保持与服务进程完全一致 网络上获取Queue,进行本地化...m.connect() # 第三步:获取Queue对象 task = m.get_task_queue() result = m.get_result_queue() # 第四步:task队列获取任务...这就是一个简单但真正分布式计算,把代码稍加改造,启动多个worker,就把任务分布到几台甚至几十台机器上,实现大规模分布式爬虫

94511

Python3脚本编程常用.md

[TOC] 0x00 Python命令行参数 实现命令行参数输入得几种方法: sys模块argv getopt 模块 sys.argv #!...WeiyiGeek.sys.argv getopt Python 提供了 getopt 模块来获取命令行参数(指定参数名称) getopt 模块是专门处理命令行参数模块,用于获取命令行选项和参数,也就是...,prog='TestArgumentDemo') - prog :程序名称(默认:sys.argv[0]) - usage : 描述程序使用情况字符串(默认值:生成fromarguments添加到解析器...- version—调用使用version=关键字参数,并在调用时打印版本信息并退出,action='version', version='%(prog)s 2.0如PROG 2.0 , %(prog...- metavar :使用消息参数名称,当ArgumentParser生成帮助消息时,它需要某种方法来引用每个期望参数

1K30
领券