是否可以使用'psutil'或任何其他Python包获取同级进程的PID?
我正在运行一套计算机 我正在尝试使用是否可以使用'psutil'或任何其他Python包获取同级进程的PID?,python,parallel-processing,Python,Parallel Processing,我正在运行一套计算机 我正在尝试使用psutil跟踪计算(如果有人有更好的解决方案,请告诉我) 我猜最后一个得到的p的值为2。cpu_num()表示此作业是并行计算的,有另一个同级进程同时进行计算 是否可以使用psutil或任何其他Python包来获取同级进程的PID “我猜最后一个得到p的2值。cpu_num()表示此作业处于并行计算状态” 不,这并不意味着其他任何事情,只是进程p当前从所有可用的CPU映射到第二个CPU上(O/s任务调度器决定执行作业的CPU/核心+进程关联设置可能会限制这样
psutil
跟踪计算(如果有人有更好的解决方案,请告诉我)
我猜最后一个得到的p的值为2。cpu_num()
表示此作业是并行计算的,有另一个同级进程同时进行计算
是否可以使用psutil
或任何其他Python包来获取同级进程的PID
“我猜最后一个得到p的2
值。cpu_num()
表示此作业处于并行计算状态”
不,这并不意味着其他任何事情,只是进程p
当前从所有可用的CPU映射到第二个CPU上(O/s任务调度器决定执行作业的CPU/核心+进程关联设置可能会限制这样的选择)
您是否尝试获取
.parent()
,然后使用.process\u iter()
获取所有进程并检查哪个进程具有相同的父进程?只需在计算本身内部跟踪计算,而不是外部跟踪计算。谢谢您的回答。“进程p当前映射到第二个CPU上”,O/S任务调度器是Python还是操作系统的一部分?O/S是操作系统的缩写。O/S是一个系统,它监督硬件的使用方式,操作任务调度器(哪个进程/线程获得了加载到实际CPU的许可,并有一定的时间来执行部分代码,然后再从CPU发出信号并被逐出到任务调度程序队列的后端,并在该位置加载其他进程/线程)。这就是O/S-es的工作方式。即使任何应用程序(无论是python、web浏览器还是其他)要求120个线程,O/S调度程序决定执行程序的时间/地点/长度。在Ubuntu18.04上与Python3.7.3、numpy 1.16.4、sklearn 0.21.2并行运行,在任务和OS调度程序之间是否有另一个中间调度程序/包装程序,例如joblib包或任何其他Python并行包中的某个程序?您是可以自由地为新添加的问题打开另一个问题,这些问题会影响到原始主题。StackOverflow最佳实践强烈建议不要影响主题并提出一个又一个新问题。StackOverflow网络礼仪也认为说“谢谢”是公平的通过点击投票,向其他人显示答案是有用的或有趣的,任何人都可以考虑。这是StAcExpBoT如何工作的方式。这种方式工作很多年了,所以最好遵循社区网络礼仪,而不是违背社区公认的规则和行为准则:O)
>>> p = psutil.Process(4370)
>>> p.cpu_percent()
0.0
>>> p.cpu_times()
pcputimes(user=6440.78, system=5.4, children_user=0.0, children_system=0.0)
>>> p.cpu_affinity()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> p.cpu_num()
2
>>> print( p.cpu_num.__doc__ )
Return what CPU this process is currently running on.
The returned number should be <= psutil.cpu_count()
and <= len(psutil.cpu_percent(percpu=True)).
It may be used in conjunction with
psutil.cpu_percent(percpu=True) to observe the system
workload distributed across CPUs.
>>> aParentOfThisPROCESS = psutil.Process( thisProcess.parent().pid )
>>> aParentOfThisPROCESS.threads()
6
>>> aParentOfThisPROCESS.open_files()
[popenfile(path='/XXXXXXXXXXXXXXXX', fd=8, position=0, mode='r', flags=32768)]
>>> print( aParentOfThisPROCESS.children.__doc__ )
Return the children of this process as a list of Process
instances, pre-emptively checking whether PID has been reused.
If *recursive* is True return all the parent descendants.
Example (A == this process):
A ─┐
│
├─ B (child) ─┐
│ └─ X (grandchild) ─┐
│ └─ Y (great grandchild)
├─ C (child)
└─ D (child)
>>> import psutil
>>> p = psutil.Process()
>>> p.children()
B, C, D
>>> p.children(recursive=True)
B, X, Y, C, D
Note that in the example above if process X disappears
process Y won't be listed as the reference to process A
is lost.