【发布时间】:2020-01-29 18:01:57
【问题描述】:
说明
我有一个使用os.popen(command) 跨越一些进程的python 脚本。
启动所有进程后,它将使用 psutil.process_iter() 方法监视(每 3 秒)进程。
有时它会显示具有相同进程名称(命令)的额外进程(重复)。但是当我使用watch -n 1 ps -ef | grep command 进行调试时,没有重复。
环境详情:
CentOS 7 和 python 3.7
代码
import psutil
def monitor_process(process_map):
processes = psutil.process_iter()
current_process_map = {}
print("current_process_map::"+str(current_process_map))
print("process_map::"+str(process_map))
for process in processes:
process_cmd_line = process.cmdline()
current_process_map[process_cmd_line[1]] = current_process_map.get(process_cmd_line[1],0)+1
for k,v in process_map:
if v != current_process_map[k]:
return False #spawned process and current process count mismatch
return True
问题
上面的代码最初(大约在 30 秒内)返回 false(current_process_map > process_map),之后它正常工作(current_process_map == process_map)。 这是python库还是centos(linux)的问题?
【问题讨论】:
标签: python-3.x linux centos7 psutil