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

分析运行中的 Python 进程

现在工作中我用的是 Python,需要线上问题定位的缘故,也有了类似的需求——想要知道当前的 Python 进程 “在干什么”。但是没有了 JVM 的加持,原有的命令或者工具都不再适用。...signal 在代码中,我们可以使用 signal 为进程预先注册一个信号接收器,在进程接收到特定信号的时候,可以打印方法栈: import traceback, signal class Debugger...这里是打印方法栈,但是实际上可以做任何事,因为方法执行的当前,上下文已经跑到进程里面了。 那么怎么向进程发送信号呢?...strace 如果进程已经无响应了,或者上面的信号接收器没有注册,那么就要考虑别的方法来或者 “进程在干什么” 这件事情了。...比如,打开前面提到的这个测试进程: lsof -p 16872 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Python

86230

python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程

查看进程 回忆上次内容 上次先ctrl + z 挂起进程 然后运行 bg ​ 编辑 程序继续跑起来 而且不断输出到标准输出流 甚至连ctrl + c 都无法结束进程了 这可怎么办呢?...只能新开一个终端想办法 查询进程 搜索 debian进程查询 ​ 编辑 找到具体方法 进程 具体方法 ​ 编辑 动手试试 新开一个终端 运行ps -elf ​ 编辑 查看到两条进程信息...搜索 ​ 编辑 搜索结果 ​ 编辑 查询手册 ​ 编辑 后台运行不输出 搜索后得到答案 ​ 编辑 nohup python -u show_time.py > test.log 2>&1 &...总结 进程查询 ps -elf 查看所有进程信息 ps -lf 查看本终端相关进程信息 杀死进程 kill -9 PID 给进程发送死亡信号 运行多个 python3 show_time.py...的话 各个进程独立 python3 show_time.py 大概 8+M 各占内存 这些进程之间是什么关系呢? ​

89200
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python标准库06 子进程 (subprocess包)

    subprocess以及常用的封装函数 当我们运行python的时候,我们都是在创建并运行一个进程。...在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序(fork,exec见Linux进程基础)。...这个时候,我们使用一整个字符串,而不是一个表来运行子进程。Python将先运行一个shell,再用这个shell来解释这整个字符串。...这些封装的目的在于让我们容易使用子进程。当我们想要更个性化我们的需求的时候,就要转向Popen类,该类生成的对象用来代表子进程。 与上面的封装不同,Popen对象创建后,主程序不会自动等待子进程完成。...如果你已经了解了操作系统的某些应用,你可以从Python中直接调用该应用(而不是完全依赖Python),并将应用的结果输出给Python,并让Python继续处理。

    2.8K60

    Python运行时动态查看进程内部信息

    接前两篇“运行时查看线程信息”的博客,我在想,既然我可以随时打印线程信息,那么我是不是可以随时打印进程内部的其它信息呢?...(这里暂时不考虑那些使用第三方库或工具的情况) 根据这个想法,查看了一下python的动态加载模块的方法,感觉这个想法还是比较靠谱,应该可以实现,所以动手写了个小测试验证了一把。...要能随时动态修改要查看的进程状态,即在不重启进程的情况下,通过修改bar.py文件修改要实现查看的内容。 主程序 foo.py #!...print "my_object: %s " % foo.my_object.data 测试 首先运行foo.py $ python foo.py 然后找到foo.py的进程号,然后使用“kill...修改一下 /tmp/my_modules/bar.py 文件,然后再次运行“$ kill -3 ”,可以看到模块被重新加载了,然后打印的新的内容。

    2.1K50

    python︱Python进程、线程、协程详解、运行性能、效率(tqdm)

    延伸一:Caffe Python接口多进程提取特征 那么在做图像处理的时候,进行预测任务的时候,可以开多进程,GPU方案。那么步骤是: 1、分割数据; 2、多个进程池。...可参考博客:机器视觉:Caffe Python接口多进程提取特征 . ---- 多线程案例——threading 1、普通的threading 参考:python 并发执行之多线程 import...锁由 Python 的 threading 模块提供,并且它最多被一个线程所持有。当一个线程试图获取一个已经锁在资源上的锁时,该线程通常会暂停运行,直到这个锁被释放。 让我们给这个函数添加锁。...多进程实践 参考:Python 多进程实践 多进程的方式可以增加脚本的并发处理能力, python 支持这种多进程的编程方式 在类unix系统中, python的os 模块内置了fork 函数用以创建子进程...从结果可以看到, 从pid = os.fork() 开始, 下面的部分代码运行了两次, 第一次是父进程运行, 第二次是子进程运行, 且子进程的fork的结果总是0, 所以这个也可以用来作为区分父进程或是子进程标志

    1.4K40

    记录Python 调用 subprocess.Popen 卡死解决办法

    subprocess.Popen 是 Python 中用于执行外部命令或程序的模块之一。它提供了创建子进程并与之交互的灵活方式。...以向 subprocess.Popen 传递一个命令字符串或命令列表,它将调用操作系统的 shell 来执行该命令。...{cmds}") 这段代码是一个 Python 函数,用于执行外部命令并捕获其输出。接收传入的系统命令,使用 subprocess.Popen 函数创建子进程来执行指定的命令。...和 subprocess.run 是 Python 中用于执行外部命令的两个常用函数,它们之间有几个重要的区别: subprocess.Popen 是一个更底层的接口,允许你以更灵活的方式创建子进程并与之交互...它返回一个 Popen 对象,通过该对象你可以控制子进程的输入、输出和状态。

    2K10

    python模块--subprocess

    代码中去执行一些系统命令,在执行python程序时,该模块会创建出一个子进程,来运行外部程序。     ...subprocess.check_output()     不会将系统命令的执行结果直接打印出来,返回一个bytes类型的对象,该对象包含了系统命令的执行结果,如果执行失败会抛出subprocess.CalledProcessError...()     上面几个函数都是Popen()的封装,主进程都会等待子进程执行完毕,Popen()创建的子进程不会被等待,相当于异步执行。    ...1.Popen()创建的对象有多个方法,可以针对子进程执行个性化操作,例如: import subprocess import time time.clock() POPEN1 = subprocess.Popen....kill() # 终止子进程 POPEN1.terminate() # 终止子进程 POPEN1.send_signal() # 向子进程发送信号 pid属性包含了子进程的pid号     2.subprocess.Popen

    67410

    在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)

    前言: 在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。...实时还原选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。...默认的配置文件为/etc/docker/daemon.json vim /etc/docker/daemon.json { "live-restore": true } 2.Docker reload配置(不会重启...-SIGHUP $(pidof dockerd) 3.检查上面的配置是否成功 docker info | grep -i live 4.重启Docker,此时重启Docker时就容器就不会停止了..."https://hx983jf6.mirror.aliyuncs.com"], "graph": "/mnt/data", "live-restore": true } 3.更新docker配置(不会重启

    4.1K20

    python的subprocess模块

    通常情况下,退出状态码为0则表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了 ​ stdout: 从子进程捕获的stdout。...需要说明的是,该方法在python3.x中才有。 call()方法启动的进程,其标准输入输出会绑定到父进程的输入和输出。调用程序无法获取命令的输出结果。...subprocess.Popen(): 在一些复杂场景中,我们需要将一个进程的执行输出作为另一个进程的输入。在另一些场景中,我们需要先进入到某个输入环境,然后再执行一系列的指令等。...0无缓冲,1 行缓冲,其他 缓冲区大小 负值 系统缓冲 stdin,stdout,stderr:标准输入,输出,错误句柄 preexec_fn:只在Unix平台下有效,用于指定一个可执行对象,它将在子进程运行之前被调用...close_sfs:在Windows平台下,如果close_sfs被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道 所以不能将close_fds设置为True同时重定向子进程的标准输入

    3.1K20

    如何在 Python 中终止 Windows 上运行的进程?

    当深入研究Windows操作系统上的Python开发领域时,无疑会出现需要终止正在运行的进程的情况。这种终止背后的动机可能涵盖多种情况,包括无响应、过度资源消耗或仅仅是停止脚本执行的必要性。...在这篇综合性的文章中,我们将探讨各种方法来完成使用 Python 终止 Windows 上运行的进程的任务。...方法3:释放“子流程”模块的力量 Python 的“子进程”模块赋予我们生成新进程的能力,与它们的输入/输出/错误管道建立连接,并检索它们的返回代码。...我们可以利用此模块来执行“taskkill”命令并有效地终止正在运行的进程。...结论 在这次深入的探索中,我们阐明了使用 Python 终止 Windows 上运行的进程的三种不同方法。通过采用“os”模块,我们授权自己执行操作系统命令。

    57930

    Python学习,多进程了解一下!学爬虫不会用多进程能行吗?

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。...Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情。...这样在演示多进程的时候比较直观。代码如下: ? 这段代码,实现了画4个同心圆的效果,如果用多进程的话,我们稍微该写一下 ? 这里,启动4个进程,同时画圆,给个图大家感受一下! ?...如果还要在加进程的话,可以用pool进程池,注意pool有2个方法,建议用非阻塞的p.apply_async不要用阻塞的p.apply方法,p.apply_async会由系统自行判断并运行,比如指定4个进程运行...5个任务,那么会在某一个进程运行完毕的同时自动开始第5个任务,而阻塞的p.apply方法会一次只运行一个进程。

    22230

    python之系统命令

    系统缓冲 stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄 preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用...close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。...shell:同上 cwd:用于设置子进程的当前目录 env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。...,如:主窗口的外观,进程的优先级等等 import subprocess ret1 = subprocess.Popen(["mkdir","t1"]) ret2 = subprocess.Popen...= subprocess.Popen("mkdir t3", shell=True, cwd='/home/dev',) import subprocess obj = subprocess.Popen

    1.1K40

    Python模块学习:subprocess模块详解

    通常情况下,退出状态码为0则表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了stdout: 从子进程捕获的stdout。...preexec_fn: 用于指定一个将在子进程运行之前被调用的可执行对象,只在Unix平台下有效。...Popen.send_signal(signal) 发送指定的信号给这个子进程。Popen.terminate() 停止该子进程。Popen.kill() 杀死该子进程。...关于communicate()方法的说明:该方法中的可选参数 input 应该是将被发送给子进程的数据,或者如没有数据发送给子进程,该参数应该是None。...如果在timeout指定的秒数后该进程还没有结束,将会抛出一个TimeoutExpired异常。捕获这个异常,然后重新尝试通信不会丢失任何输出的数据。

    1.2K40

    python中执行shell命令的几个方

    stdin, stdout, stderr 分别表示程序的标准输入、输出、错误句柄 preexec_fn 只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用...close_sfs 在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。...,如:主窗口的外观,进程的优先级等等 createionflags 同上 import subprocess ret1 = subprocess.Popen(["mkdir","t1"]) ret2...= subprocess.Popen("mkdir t2", shell=True) 终端输入的命令分为两种: 输入即可得到输出,如:ifconfig 输入进行某环境,依赖再输入,如:python import...subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr

    3K10

    python笔记65 - Python3 subprocess执行命令行获取返回结果

    stdin, stdout, stderr: 分别表示程序的标准输入、输出、错误句柄 preexec_fn: 只在 Unix 平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用...shell: 如果该参数为 True,将通过操作系统的 shell 执行指定的命令。...\\lib\\site-packages\\pip (python 3.6)\r\r\n' 于是可以添加encoding参数utf-8 import subprocess p = subprocess.Popen...\lib\site-packages\pip (python 3.6) 如果输出有中文,会出现解码异常 输入java,正常情况是可以输出中文的 import subprocess p = subprocess.Popen...这段包含了中文") 使用subprocess.Popen执行,需设置encoding=’utf-8’ import subprocess p = subprocess.Popen(['python',

    9.3K20

    Python Subprocess库详解

    简介 Subprocess库是Python中用于创建和管理子进程的标准库。它提供了一个强大而灵活的接口,使得你可以在Python中启动新的进程、连接它们的输入和输出,并与它们进行交互。...超时处理 在实际应用中,我们可能希望设置子进程的最长运行时间,以避免因子进程无法正常退出而导致父进程一直等待。...使用Shell命令 有时候我们可能需要在子进程中执行Shell命令,而不是直接运行可执行文件。...使用subprocess.Popen的timeout参数设置超时时间 subprocess.Popen的timeout参数允许你设置子进程的最长运行时间,以避免因子进程无法正常退出而导致父进程一直等待。...使用subprocess.Popen的timeout参数设置超时时间 subprocess.Popen的timeout参数允许你设置子进程的最长运行时间,以避免因子进程无法正常退出而导致父进程一直等待。

    2.5K21
    领券