У меня есть код, который будет порождать 2 дочерних процесса:
P1 = Process(target=worker, args=(), name="p1")
P1.start()
P1_pid = P1.pid
P2 = Process(target=<a function that will monitor the CPU and Memory used by P1>, args=(P1_pid), name="P2")
P2.start()
По сути, мне нужно найти способ создания второго дочернего процесса таким образом, чтобы целевой работник P2 принял pidдочерний процесс P1 и получает процессор и память, которые занимает дочерний процесс P1. Мне нужно сделать это без использования psutil
.
Имеет ли многопроцессорный модуль что-то подобное встроенному? Я искал это, но не мог найти это.
Я также попробовал следующее, где ниже - логика в рабочем задании P2:
cmd = "ps -p <P1_pid> -o %cpu,%mem"
MyOut = subprocess.Popen([cmd], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True )
stdout, stderr = MyOut.communicate()
print(stdout)
Выше напечатано следующее:
b' %CPU %MEM\n'
КакойКазалось, не имеет смысла, потому что если я запускаю команду ps -p ..
на обычной оболочке Unix, то она показывает использование памяти 0,1.
Есть идеи?