专栏首页Python小屋Python程序中创建子进程时对环境变量的要求

Python程序中创建子进程时对环境变量的要求

首先,来看下面一段代码,在主进程中重新为os.environ赋值,但在子进程中并不会起作用,子进程中使用的仍是系统的全部环境变量。

运行结果:

在Python中,为变量重新赋值实际上是修改了变量的引用,这适用于任意类型的变量。对于列表、字典、集合以及类似的可变类型对象,可以通过一定形式改变其中元素的引用而不改变整个对象的引用。os.environ是一个类似于字典的数据结构,这里以字典为例,字典可以通过pop()、popitem()、clear()、update()以及下标赋值等原地操作的方法或操作来修改其中的元素而不影响字典对象的引用。

上面的代码修改如下:

运行结果:

在主进程中清空了所有环境变量,然后创建子进程失败并引发了异常。以Windows操作系统为例,创建子进程时会调用API函数CreateProcessA,该函数要求环境变量至少要包含SYSTEMROOT,否则调用另一个函数CryptAcquireContext时会失败。

为了验证上面的说法,代码修改如下,达到预期目标。

运行效果:

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 初见Flask

    Flask 是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Soc...

    py3study
  • 教你如何使用 flask 框架在浏览器打印 hello world

    我就不再这里赘述了,我这里建议安装 anaconda3, 因为集成了很多常用的库,我们可以直接使用,不需要再去安装,可以参考我以前学习写得一篇文章 https:...

    公众号---人生代码
  • 带你认识 flask 优化应用结构

    目前状态下的应用有两个基本问题。如果你观察应用的组织方式,你会注意到有几个不同的子系统可以被识别,但支持它们的代码都混合在了一起,没有任何明确的界限。我们来回顾...

    公众号---人生代码
  • 如何在macOS上安装Python 3并设置本地编程环境

    Python是一种多功能编程语言,可用于许多不同的编程项目。1991年首次出版,其名称灵感来自英国喜剧组织Monty Python,开发团队希望使Python成...

    藕丝空间
  • 带你构建你的的第一个Python和Django应用程序

    群内不定时分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流 ? 您以前可能听说过Python,特别是如果您...

    企鹅号小编
  • Django框架学习笔记:(一)认识Django

    Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,从这一节开始,我们逐步讲解django的基础知识。

    小雨编程
  • 大数据技术之_23_Python核心基础学习_01_计算机基础知识 + Python 入门 (9.5小时)

    课程名称:Python 基础视频教程 讲师:尚硅谷教育,李立超(lichao.li@foxmail.com) 面向的层次:From Zero to Hero(从...

    黑泽君
  • Python从菜鸟到高手(1):初识Python

      Python是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版发行于19...

    蒙娜丽宁
  • 程序员的强迫症–如何让电脑桌面变得非常干净?

    作为一枚有强迫症的程序员是忍受不了这么乱的桌面,接下来教你们整理电脑桌面又不妨碍办公,还能装装逼,让电脑小白使用你的电脑不知如何下手。

    忆想不到的晖
  • # 如何在Ubuntu 14.04上使用Bottle Micro Framework部署Python Web应用程序 ##

    由于其灵活性和高级功能,Python是一种优秀的Web编程语言。Web框架可以使编程Web应用程序更加简单,因为它们连接了强大的Web界面所需的许多组件。

    谢鸢
  • SQL、Pandas和Spark:这个库,实现了三大数据分析工具的大一统

    看过近期推文的读者,想必应该知道笔者最近在开一个数据分析常用工具对比的系列,主要是围绕SQL、Pandas和Spark三大个人常用数据分析工具,目前已完成了基本...

    luanhz
  • 如何在Ubuntu 16.04上使用Flask和Python 3编写Slash命令

    Slack是团队的沟通平台。Slack有许多附加组件,可以让团队扩展Slack,并将其与其他程序集成。slash命令是在消息输入框中执行操作的快捷方式。例如,键...

    物花无语
  • flask框架(一)

    框架就是一个项目的半成品,我们做项目的时候只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码。

    小闫同学啊
  • 【一周掌握Flask框架学习笔记】Flask概念及基础

    Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。

    天道Vax的时间宝藏
  • 《Python分布式计算》 第4章 Celery分布式应用 (Distributed Computing with Python)搭建多机环境安装Celery测试安装Celery介绍更复杂的Celer

    本章是前面某些知识点的延续。特别的,本章以实例详细的探讨了异步编程和分布式计算。本章关注Celery,一个复杂的用于构建分布应用的Python框架。最后,对比了...

    SeanCheney
  • Python 基础入门--简介和环境配置

    上周结束了如何构造一个机器学习项目的系列文章,当然还有一篇简单的总结以及介绍一些入门的学习资料,不过还在整理,应该这周内会整理好的。

    kbsc13
  • Jupyter在美团民宿的应用实践

    做算法的同学对于Kaggle应该都不陌生,除了举办算法挑战赛以外,它还提供了一个学习、练习数据分析和算法开发的平台。Kaggle提供了Kaggle Kernel...

    美团技术团队
  • sanic异步框架之中文文档

    在安装Sanic之前,让我们一起来看看Python在支持异步的过程中,都经历了哪些比较重大的更新。

    py3study
  • Python基础学习_08_进程和线程操作

    每个运行的进程,系统都会分配一个相关的运行环境,一般的可以将该运行环境认为是进程环境变量的集合,当进程启动的时候,环境变量就确定了,只有当前进程才能够修改其环...

    码农帮派

扫码关注云+社区

领取腾讯云代金券