环境:操作系统——debian + python3。
下面的所有输出信息都忽略不重要。
使用 cat /proc/cpuinfo 获取我计算机的 cpu 信息:
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model name : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model name : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
这是要测试的 mthreads.py。
import os
import threading
print(os.getpid())
def dead_loop():
while True:
pass
t = threading.Thread(target=dead_loop)
t.start()
dead_loop()
t.join()
在带有 的终端中运行它python3 mthreads.py
,获取3455
作为进程 id 的输出python3 mthreads.py
。
cat /proc/3455/status
Name: python3
Umask: 0022
State: S (sleeping)
Tgid: 3455
Ngid: 0
Pid: 3455
PPid: 2205
Threads: 2
Cpus_allowed: 3
Cpus_allowed_list: 0-1
在终端中运行它。
python3 mthreads.py
3455
1.我的电脑有2个cpu,为什么Cpus_allowed是3,比我的cpu多?
pstree 3455 -p
python3(3455)───{python3}(3456)
2.现在有aer 2个线程在运行,3455是进程号,3456是线程号,另一个线程号是哪个?如何获得第二个线程ID号?
3.我想知道哪个cpu(cpu0,cpu1)上运行的是哪个进程ID?
这不是 CPU 的数量,而只是告诉您程序线程正在哪个 CPU 上执行
PPID 代表父进程 ID。这是您正在检查的进程的父进程。
http://linuxcommand.org/lc3_man_pages/ps1.html
直接来自手册页的示例供参考:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
大多数此类信息都可以在手册页中找到,但我知道它们包含很多信息,而且很难追踪。
有时进程id=线程id。
显示我的代码。
LWP表示可调度实体的轻量级进程(线程)ID(别名spid,tid),NLWP表示man ps页中进程中的lwps(线程)数。
进程 id--7761 包含两个线程,一个线程 id 是 7761,与进程 id 值相同,另一个线程 id 是 7762。