[oeasy]python0031_挂起进程_恢复进程_进程切换

简介: [oeasy]python0031_挂起进程_恢复进程_进程切换

 

查看进程

回忆上次内容

    • 上次修改了 $PATH 路径
      • 把当前用户shiyanlou的宿主文件夹 ~
        • 添加到 $PATH
          • 这样 sleep.py 就可以被找到
          • 于是就可以被执行了
            • 还可以把配置 $PATH 的脚本
              • 放到 zsh的配置文件(~/.zshrc) 中
              • 配置 ~/.zshrc 就可以
                • 设置 zsh 环境下默认的 $PATH
                    • 在当前路径运行 sleep.py
                      • python 程序第 1 行
                        • 声明打开方式为 python3
                          • /usr/bin/python3
                            • 从硬盘调用到内存
                              • 成为一个进程
                                • 不断输出时间
                                  • ctrl+c结束进程

                                        image.gif编辑

                                          • 我想看到 python3 这个进程
                                            • 可能吗?🤔

                                              进行搜索

                                                • 如果我想查看进程
                                                  • 也需要运行相应的进程查看命令ps
                                                  • 但是如果 sleep.py 持续输出时间
                                                  • 我是没有办法运行ps命令的

                                                    image.gif编辑

                                                      • 我需要把 sleep.py 转到后台运行
                                                        • 然后查询进程信息

                                                          切到后台

                                                            • 切换的方法比较简单
                                                              • ctrl + z
                                                                • 当前进程前台
                                                                • 切换到 后台并暂停
                                                                  • 简单来说就是不给他用cpu了
                                                                  • suspended(挂起了)

                                                                    image.gif编辑

                                                                      • 可以把后台进程切换回前台吗?

                                                                      前后台切换

                                                                        • 所谓把 进程 切换到后台
                                                                          • 就是停止不断把时间输出到标准输出流
                                                                            • sleep.py这个进程从前台切换到后台并暂停
                                                                              • 而且把控制权交回给shell
                                                                                • 可以继续输入命令了
                                                                                    • 那能否反过来?
                                                                                      • 把进程从 后台(background)
                                                                                      • 切换到 前台 (foreground)呢?

                                                                                        image.gif编辑

                                                                                          • fg
                                                                                            • 怎么理解fg呢?

                                                                                              fg

                                                                                                • foreground的意思就是
                                                                                                  • 离观察者更近的前景

                                                                                                    image.gif编辑

                                                                                                      • fore的意思是前面的
                                                                                                        • before 在前面的
                                                                                                        • first 最前面的第一个
                                                                                                        • former 曾经的
                                                                                                        • forth 向前
                                                                                                        • forward 向前进
                                                                                                        • far 前进的太多了就远了
                                                                                                        • further 比远还要进一步的
                                                                                                        • 象声词
                                                                                                        • 词根来自*per

                                                                                                          *per

                                                                                                            • 象声词
                                                                                                              • 来自于投掷

                                                                                                                image.gif编辑

                                                                                                                  • pro-词根
                                                                                                                    • prohibit = pro + forbid 事先禁止
                                                                                                                    • provide = pro + view 事先看过
                                                                                                                    • promise = pro + mission 事前承诺使命
                                                                                                                    • promote 促进
                                                                                                                    • profit 利润
                                                                                                                    • project 投影
                                                                                                                    • process 步骤、进展
                                                                                                                      • 在计算机中
                                                                                                                        • process也指进程
                                                                                                                        • 内存里面的一段空间

                                                                                                                          foreground

                                                                                                                            • foreground(前台)
                                                                                                                              • fg 命令把 后台 进程放回 前台
                                                                                                                              • 把挂起的进程重新又放到前台
                                                                                                                              • cpu又可以给这个进程用了

                                                                                                                                image.gif编辑

                                                                                                                                  • 但是这个我怎么知道他到后台是否暂停了呢?

                                                                                                                                  挂起

                                                                                                                                    • 将show_time.py挂起后
                                                                                                                                      • 重新编辑show_time.py
                                                                                                                                      • 每行输出一个数字
                                                                                                                                      • 数字自增

                                                                                                                                        #!/usr/bin/python

                                                                                                                                        i = 0

                                                                                                                                        import time

                                                                                                                                        while True:

                                                                                                                                           i = i + 1

                                                                                                                                           print(i, "===", time.asctime())

                                                                                                                                           time.sleep(1)

                                                                                                                                          • 保存并退出
                                                                                                                                          • 恢复刚才放到后台并暂停的show_time.py

                                                                                                                                          image.gif编辑

                                                                                                                                            • 没有在前面加上标号数字
                                                                                                                                            • 这是为什么呢?🤔
                                                                                                                                            • 明明已经保存修改了呀?🤔

                                                                                                                                            进程

                                                                                                                                              • 因为我们启动 python3 show_time.py 的时候
                                                                                                                                                • 是在修改之前
                                                                                                                                                • 从硬盘读取 show_time.py
                                                                                                                                                  • 放入内存的时候
                                                                                                                                                    • 还没有被修改成
                                                                                                                                                      • 要输出数字编号
                                                                                                                                                        • 这个进程在内存中
                                                                                                                                                          • 始终还是原来调用时的样子
                                                                                                                                                          • 也就是修改前的样子
                                                                                                                                                              • 我们在硬盘上文件的修改
                                                                                                                                                                • 对已经运行了的进程不起作用
                                                                                                                                                                  • 那怎么办?

                                                                                                                                                                  重启进程

                                                                                                                                                                    • 先将进程放回前台
                                                                                                                                                                      • 再ctrl + c
                                                                                                                                                                      • 结束这个进程

                                                                                                                                                                        image.gif编辑

                                                                                                                                                                          • 最后重新运行
                                                                                                                                                                            • python3 show_time.py
                                                                                                                                                                              • 这样硬盘中修改了的python文件
                                                                                                                                                                                • 就会被作为新进程重新载入内存
                                                                                                                                                                                • 新修改就生效了
                                                                                                                                                                                  • 这个ctrl + z
                                                                                                                                                                                  • 真的会暂停进程吗?

                                                                                                                                                                                  暂停

                                                                                                                                                                                    • 运行程序后
                                                                                                                                                                                      • 挂起进程
                                                                                                                                                                                      • 等待一段时间
                                                                                                                                                                                      • 恢复进程

                                                                                                                                                                                        image.gif编辑

                                                                                                                                                                                          • 还是从5开始
                                                                                                                                                                                            • 没有在后面偷偷跑
                                                                                                                                                                                              • 如果我就想让这个进程
                                                                                                                                                                                                • 在后台偷偷跑呢?

                                                                                                                                                                                                  bg

                                                                                                                                                                                                    • 先ctrl + z 挂起进程
                                                                                                                                                                                                      • 然后运行 bg

                                                                                                                                                                                                        image.gif编辑

                                                                                                                                                                                                          • 程序继续跑起来
                                                                                                                                                                                                          • 而且不断输出到标准输出流
                                                                                                                                                                                                          • 甚至连ctrl + c 都无法结束进程了
                                                                                                                                                                                                          • 这可怎么办呢?

                                                                                                                                                                                                          总结

                                                                                                                                                                                                            • 进程前后台切换
                                                                                                                                                                                                              • ctrl + z 把当前进程切换到后台并暂停
                                                                                                                                                                                                              • fg 可以把进程再切回前台
                                                                                                                                                                                                              • bg 可以让进程在后台持续运行
                                                                                                                                                                                                                • 但是问题就是根本停不下来!
                                                                                                                                                                                                                • process 真的就
                                                                                                                                                                                                                  • 不断pro - pro - pro
                                                                                                                                                                                                                  • 或者说foreword - foreword - foreword 跑起来了

                                                                                                                                                                                                                    image.gif编辑

                                                                                                                                                                                                                      相关文章
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      10天前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      并行计算 数据处理 调度
                                                                                                                                                                                                                      Python中的并发编程:探索多线程与多进程的奥秘####
                                                                                                                                                                                                                      本文深入探讨了Python中并发编程的两种主要方式——多线程与多进程,通过对比分析它们的工作原理、适用场景及性能差异,揭示了在不同应用需求下如何合理选择并发模型。文章首先简述了并发编程的基本概念,随后详细阐述了Python中多线程与多进程的实现机制,包括GIL(全局解释器锁)对多线程的影响以及多进程的独立内存空间特性。最后,通过实例演示了如何在Python项目中有效利用多线程和多进程提升程序性能。 ####
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      11天前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      人工智能 Shell 开发工具
                                                                                                                                                                                                                      [oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
                                                                                                                                                                                                                      本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
                                                                                                                                                                                                                      12 1
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      22天前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      人工智能 Python
                                                                                                                                                                                                                      [oeasy]python039_for循环_循环遍历_循环变量
                                                                                                                                                                                                                      本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
                                                                                                                                                                                                                      31 4
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      22天前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      调度 iOS开发 MacOS
                                                                                                                                                                                                                      python多进程一文够了!!!
                                                                                                                                                                                                                      本文介绍了高效编程中的多任务原理及其在Python中的实现。主要内容包括多任务的概念、单核和多核CPU的多任务实现、并发与并行的区别、多任务的实现方式(多进程、多线程、协程等)。详细讲解了进程的概念、使用方法、全局变量在多个子进程中的共享问题、启动大量子进程的方法、进程间通信(队列、字典、列表共享)、生产者消费者模型的实现,以及一个实际案例——抓取斗图网站的图片。通过这些内容,读者可以深入理解多任务编程的原理和实践技巧。
                                                                                                                                                                                                                      46 1
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      29天前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      Python
                                                                                                                                                                                                                      Python中的多线程与多进程
                                                                                                                                                                                                                      本文将探讨Python中多线程和多进程的基本概念、使用场景以及实现方式。通过对比分析,我们将了解何时使用多线程或多进程更为合适,并提供一些实用的代码示例来帮助读者更好地理解这两种并发编程技术。
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      29天前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      存储 Python
                                                                                                                                                                                                                      [oeasy]python038_ range函数_大小写字母的起止范围_start_stop
                                                                                                                                                                                                                      本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
                                                                                                                                                                                                                      21 1
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      15天前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      人工智能 开发工具 Python
                                                                                                                                                                                                                      [oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
                                                                                                                                                                                                                      本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
                                                                                                                                                                                                                      12 0
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      1月前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      数据挖掘 程序员 调度
                                                                                                                                                                                                                      探索Python的并发编程:线程与进程的实战应用
                                                                                                                                                                                                                      【10月更文挑战第4天】 本文深入探讨了Python中实现并发编程的两种主要方式——线程和进程,通过对比分析它们的特点、适用场景以及在实际编程中的应用,为读者提供清晰的指导。同时,文章还介绍了一些高级并发模型如协程,并给出了性能优化的建议。
                                                                                                                                                                                                                      31 3
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      1月前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      Python
                                                                                                                                                                                                                      [oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
                                                                                                                                                                                                                      本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
                                                                                                                                                                                                                      21 3
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      1月前
                                                                                                                                                                                                                      |
                                                                                                                                                                                                                      存储 C++ Python
                                                                                                                                                                                                                      [oeasy]python037_ print函数参数_sep分隔符_separator
                                                                                                                                                                                                                      本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
                                                                                                                                                                                                                      35 0
                                                                                                                                                                                                                      下一篇
                                                                                                                                                                                                                      无影云桌面