是否可以使用'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.