当前位置: 首页 > 面试题库 >

Python线程名称未显示在ps或htop上

柳培
2023-03-14
问题内容

当我为Python线程设置名称时,它不会显示在htop或ps上。ps输出仅显示python为线程名称。有什么方法可以设置线程名称,使其显示在类似它们的系统报告上?

from threading import Thread
import time


def sleeper():
    while True:
        time.sleep(10)
        print "sleeping"

t = Thread(target=sleeper, name="Sleeper01")
t.start()
t.join()

ps -T -p {PID}输出

  PID  SPID TTY          TIME CMD
31420 31420 pts/30   00:00:00 python
31420 31421 pts/30   00:00:00 python

问题答案:

首先安装prctl模块。(在debian /
ubuntu上只需输入sudo apt-get install python-prctl

from threading import Thread
import time
import prctl

def sleeper():
    prctl.set_name("sleeping tiger")
    while True:
        time.sleep(10)
        print "sleeping"

t = Thread(target=sleeper, name="Sleeper01")
t.start()
t.join()

此打印

$ ps -T
  PID  SPID TTY          TIME CMD
22684 22684 pts/29   00:00:00 bash
23302 23302 pts/29   00:00:00 python
23302 23303 pts/29   00:00:00 sleeping tiger
23304 23304 pts/29   00:00:00 ps


 类似资料:
  • 问题内容: 我有一个带有log4j的Struts应用程序,用于显示有关应用程序的信息。 格式化日志输出的模式如下: 我需要在日志中显示 线程ID 而不是 线程名称 。显示线程名称的转换字符为%t。我没有在log4j文档中看到获得它的方法。 谁能帮我?? 问题答案: 这是可能的,但并不像仅使用一些预配置的模式那样容易。 Log4j 1.X和Log4j 2.x没有用于打印线程ID的任何预配置模式,但是

  • 我有一个大约有100列的xlsx文件。当我使用函数时,它会显示一些第一列和最后一列,但不是全部列。我想通过for循环显示(打印)所有列名(标题)。我该怎么做呢?

  • 问题内容: 我正在尝试使用httplib将信用卡信息发送到authorize.net。当我尝试发布请求时,得到以下回溯: 我这样建立我的请求: 要添加另一层,它正在我们的开发服务器上运行,该服务器具有httplib 2.6,并且在httplib.HTTPSConnection中没有source_address参数。 任何帮助是极大的赞赏。 =============================

  • 检查版本和所有的事情,我开始工作后,我拉了ubuntu图像 之后我检查图像 图像显示的所有细节后,我使容器 这给我看集装箱 怎么解决这个?为什么我的容器没有显示在docker ps中?

  • 测试类和测试方法可以声明自定义显示名称 - 使用空格,特殊字符,甚至emojis表情符号 - 将由测试runner和测试报告显示。 import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @DisplayName("A special test case") class DisplayNameDem

  • 很高兴来到这里 我目前正在深入研究Laravel,发现了一个对我来说很有趣的类(碳时间格式)。但现在我遇到了一个问题,德国日的名称没有显示出来。如果我将区域设置切换为英语,它将显示出来。 在我index.blade.php 它返回: 如果我删除dd(),它将不再显示。也许有人知道解决这个问题的办法。 向你问好,罗布德福洛普