当前位置: 首页 > article >正文

Python 子进程输出重定向以后,部分内容会出现在父进程的控制台屏幕上

1.问题描述

父进程中使用multiprocessing.Process创建子进程,并在子进程中执行了

os.system("python task.py > run.log")

在task.py中抛出异常,被try except 结构捕获以后,print(traceback.print_exc())输出的内容全在父进程的控制台屏幕,而子进程的run.log日志文件里却没有,子进程中其他print内容都在run.log日志中

2.实验探索原因

实验代码:

命令行执行并重定向输出:

日志文件out.log的内容:

修改实验代码:

日志文件out.log的内容:

3.结论

traceback.print_exc() 本身不会返回任何信息,而是执行具体的打印动作,但是并不是打印到标准输出。因为print是输出到标准输出的,使用重定向符号>以后,print的内容输出到了out.log文件中,但是traceback.print_exc()打印的内容并没有输出到out.log文件。

4.试验如何重定向traceback.print_exc()打印的内容

试验代码:

命令行重定向标准错误到out.log文件中:

out.log文件的内容:

5.试验结果:

重定向标准错误,可将traceback.print_exc()输出的内容重定向到指定文件

6.尝试同时重定向标准输出和标准错误

实验代码:

命令行重定向标准输出和标准错误到out.log文件中:

查找原因:

试验第一种方式:

第一种方式没法将标准错误和标准输出重定向到同一个文件

试验第二种方式:

out.log文件的内容:

成功!


http://www.kler.cn/a/398465.html

相关文章:

  • .NET 一款SYSTEM权限隐藏的计划任务工具
  • vxe-grid table 校验指定行单元格的字段,只校验某个列的字段
  • Leetcode 3356. Zero Array Transformation II
  • uni-app快速入门(六)--rpx尺寸单位与Flex布局
  • 【网络安全面经】OSI七层模型每层都有什么协议
  • 【网络安全】SSL(一):为什么需要 Keyless SSL?
  • 023、ELK 从入门到实践
  • 【AI日记】24.11.17 看 GraphRAG 论文,了解月之暗面
  • 深度学习中常见的学习率调整策略
  • 蓝桥杯c++算法学习【4】之简单数论(阶乘约数、求值、循环小数、等差数列、最大比例:::非常典型的必刷例题!!!)
  • PyCharm2024.2.4安装
  • 【初阶数据结构与算法】链表刷题之链表分割、相交链表、环形链表1、环形链表I、环形链表II
  • Ajax获取PHP端csv转的json数据并js前端排序与分页
  • 华东师范大学数学分析第五版PDF习题答案上册及下册
  • 第二十三章 TCP 客户端 服务器通信 - SSL TLS组件
  • java实现代码沙盒(docker-java)
  • 基于neo4j的体育运动员问答问答系统
  • 遇到 mysql_config not found 错误
  • CSS基础知识05(弹性盒子、布局详解,动画,3D转换,calc)
  • 第03章 文件编程