Linux内核在执行程序时,将所有运行时信息写到了/proc/{pid} 目录下。
下面我们以以下python的2线程程序为例,详细说一下Linux系统下如何查看
1,某个进程有几个线程
2,某个进程里具体有哪些线程
我们通过如下代码(threaddemo.py,本代码总共2个线程,一个是主线程,另外一个是the second thread线程),通过命令python threaddemo.py运行起来后,通过ps命令查看。
第一步:
sudo pythen threaddemo.py
运行该程序,程序启动后会打印一些线程的基本信息,并周末二个线程交替打印1,2,3,4......
第二步:
ps -aux | grep threaddemo
打印出进程的信息,我们可以看到如下图所于第二行的7250就是刚才运行的程序的进程号
第三步:
sudo cat /proc/7250/status | grep Threads
可以看出7250(用第二步中查找出来的进程号替换这个7250)这个进程下,有2个线程
第四步:
ps -T -p 7250
可以看出7250(用第二步中查找出来的进程号替换这个7250)这个进程下,有2个线程,
这二个线程的线程号SPID分别是7250和7251
(-T这个参数用来将-p指定的进程中和线程打印出来)
源代码如下图所示:
import threading
import time
def task1():
print("我是第2个线程 start")
print("当前线程信息", threading.current_thread())
i = 0
while 1:
time.sleep(1)
print("第2个线程:", i)
i = i + 1
print("T1 finish")
def main():
# 创建一个新线程
new_thread = threading.Thread(target=task1, name="the second thread")
# 启动新线程
new_thread.start()
print("总共线程数量为", threading.active_count())
print("所有线程的信息", threading.enumerate())
print("当前线程信息", threading.current_thread())
j = 0
while 1:
time.sleep(1)
print("第1个线程:", j)
#print(j)
j = j + 1
#二个线程都永远不会执行完
main()