(Unix/Python) Activity 监控 % CPU
(Unix/Python) Activity Monitor % CPU
我有一个项目正在为我的其他项目之一开发分布式计算模型。我的一个脚本是多进程的,监视目录中的更改,解码泡菜,根据它们前往的节点为它们创建身份验证密钥,然后重新腌制它们。 (编辑:这些过程都在循环中运行。)
我的问题是,在查看 OSX 中的 activity 监视器时,我的 %CPU 列显示 运行 脚本的主要进程的 100%。这三个显示 100% 的是管理器脚本,以及两个节点(我在一台机器上模拟模型,目的是将来将模型移动到实时集群网络)。这是不好吗?我的系统使用率显示 27.50%,用户 12.50%,空闲 65%。
首先,我尝试自己研究,我唯一的想法是这些数字显示该进程在整个生命周期内都在使用 CPU,并且从不空闲。
我可以澄清一下吗?
根据评论更新:
我的进程 运行 处于无限循环中,监视各自目录中文件的更改,以便从管理器 process/script(项目集群中的一台单独计算机)接收新的 'jobs'最终实施)。也许有更好的方法来等待 I/O 这种不需要太多处理器时间的形式?
解决方案(如果是次优):
在每个循环结束时实施 time.sleep(n)
周期 0.1
秒。将 CPU 时间减少到不超过 0.4%。
尽管如此,我仍在寻找一种更优化的方法来减少 CPU 时间,而不使用未包含在 Python 标准库中的模块,我想避免使用 time.sleep(n)
期间,因为我希望系统能够随时响应,并且如果输入文件的负载非常高,我不希望它在处理文件时浪费时间睡觉。
我的进程通过忙等待运行,因此导致它们使用过多的 CPU 时间:
while True:
files = os.path.listdir('./sub_directory/')
if files != []:
do_something()
这是我正在执行的每个 script/process 的基础。
我有一个项目正在为我的其他项目之一开发分布式计算模型。我的一个脚本是多进程的,监视目录中的更改,解码泡菜,根据它们前往的节点为它们创建身份验证密钥,然后重新腌制它们。 (编辑:这些过程都在循环中运行。)
我的问题是,在查看 OSX 中的 activity 监视器时,我的 %CPU 列显示 运行 脚本的主要进程的 100%。这三个显示 100% 的是管理器脚本,以及两个节点(我在一台机器上模拟模型,目的是将来将模型移动到实时集群网络)。这是不好吗?我的系统使用率显示 27.50%,用户 12.50%,空闲 65%。
首先,我尝试自己研究,我唯一的想法是这些数字显示该进程在整个生命周期内都在使用 CPU,并且从不空闲。
我可以澄清一下吗?
根据评论更新: 我的进程 运行 处于无限循环中,监视各自目录中文件的更改,以便从管理器 process/script(项目集群中的一台单独计算机)接收新的 'jobs'最终实施)。也许有更好的方法来等待 I/O 这种不需要太多处理器时间的形式?
解决方案(如果是次优):
在每个循环结束时实施 time.sleep(n)
周期 0.1
秒。将 CPU 时间减少到不超过 0.4%。
尽管如此,我仍在寻找一种更优化的方法来减少 CPU 时间,而不使用未包含在 Python 标准库中的模块,我想避免使用 time.sleep(n)
期间,因为我希望系统能够随时响应,并且如果输入文件的负载非常高,我不希望它在处理文件时浪费时间睡觉。
我的进程通过忙等待运行,因此导致它们使用过多的 CPU 时间:
while True:
files = os.path.listdir('./sub_directory/')
if files != []:
do_something()
这是我正在执行的每个 script/process 的基础。