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

Python 学习 第四册 第10章 系统(2)

-----用教授的方式学习

目录

10.3 进程

10.3.1 使用subprocess创建进程

10.3.2 使用multiprocessing创建进程

10.3.3 使用terminate()终止进程

10.4 日期和时间

10.4.1 datetime模块

10.4.2 使用time模块

10.4.3 读写日期和时间


10.3 进程

当运行一个程序时,操作系统会创建一个进程。它会使用系统资源(CPU、内存和磁盘空间)和操作系统内核中的数据结构(文件、网络连接、用量统计等)。进程之间是互相隔离的,即一个进程既无法访问其他进程的内容,也无法操作其他进程。

>>> import os

>>> os.getpid()

76051

>>> os.getcwd()

'/Users/williamlubanovic'

下面的函数会获取我的用户 ID 和用户组 ID:

>>> os.getuid()

501

>>> os.getgid()

20

10.3.1 使用subprocess创建进程

你可以使用 Python 标准库中的subprocess 模块来启动和终止其他程序。

>>> import subprocess

>>> ret = subprocess.getoutput('date')

>>> ret

'Sun Mar 30 22:54:37 CDT 2024'

因为 getoutput() 的参数是一个字符串,可以表示一个完整的 shell命令,所以你可以在里面使用参数、管道、I/O 重定向 < 和 >,等等:

>>> ret = subprocess.getoutput('date -u')

>>> ret

'Mon Mar 31 03:55:01 UTC 2024'

把这个输出用管道传给 wc 命令,可以计算出一共有 1 行、6 个单词和 29 个字符:

>>> ret = subprocess.getoutput('date -u | wc')

>>> ret

' 1 6 29'

另一个类似的方法是 check_output(),可以接受一个命令和参数列表。

>>> ret = subprocess.check_output(['date', '-u'])

>>> ret

b'Mon Mar 31 04:01:50 UTC 2024\n'

要获取其他程序的退出状态,可以使用 getstatusoutput() 函数,它会返回一个包含状态码和输出的元组:

>>> ret = subprocess.getstatusoutput('date')

>>> ret

(0, 'Sat Jan 18 21:36:23 CST 2024')

如果只想要退出状态,可以使用 call():

相关文章:

  • OpenCV图像变换
  • React的State和setState
  • Flink——最流批的大数据框架(流批一体)
  • 【Unity学习笔记】第十八 基于物理引擎的日月地系统简单实现
  • java智慧工地系统源码 智慧工地标准之一:环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能?
  • ThinkPHP6图书借阅管理系统
  • 基于uni-app和图鸟UI的智慧农业综合管控平台小程序技术实践
  • vue实现的商品列表网页
  • 第二篇: 掌握Docker的艺术:深入理解镜像、容器和仓库
  • 华为HCIP Datacom H12-821 卷10
  • 2024年华为OD机试真题-万能字符单词拼写-C++-OD统一考试(C卷D卷)
  • Admin
  • 公共网络IP地址不正确?别担心,这里有解决方案
  • 【R语言】地理探测器模拟及分析(Geographical detector)
  • 计算机网络 交换机的VLAN配置
  • 《深入 React 技术栈》
  • angular2开源库收集
  • centos安装java运行环境jdk+tomcat
  • Computed property XXX was assigned to but it has no setter
  • eclipse(luna)创建web工程
  • FineReport中如何实现自动滚屏效果
  • java多线程
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MD5加密原理解析及OC版原理实现
  • node学习系列之简单文件上传
  • orm2 中文文档 3.1 模型属性
  • React-flux杂记
  • React-redux的原理以及使用
  • SSH 免密登录
  • 分布式任务队列Celery
  • 理清楚Vue的结构
  • 一个JAVA程序员成长之路分享
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (SERIES12)DM性能优化
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十八)三元表达式和列表解析
  • (四)进入MySQL 【事务】
  • (一)SvelteKit教程:hello world
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)shell调试方法
  • (转)Unity3DUnity3D在android下调试
  • (转)拼包函数及网络封包的异常处理(含代码)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ./和../以及/和~之间的区别
  • .apk文件,IIS不支持下载解决
  • .NET : 在VS2008中计算代码度量值
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析