我有一个计算量很大的程序(我用 Python 编写),两天前我开始并行运行它的 6 个副本(在运行 Windows7 的 Mac Book Pro 上使用 6 个 Cygwin 终端)。这足以让我当时的 4 核(超线程的 8 个逻辑核)机器达到最大限度。出于某种原因,2.5 天后,尽管所有 6 个进程仍在运行,但我的 CPU 使用率还不到一半。当我使用任务管理器时,我看到 60% 处于空闲状态,6 个 python2.7 进程中有 3 个占用了 13%,3 个 python2.7 进程占用了 0%。我希望它们再次最大限度地发挥我机器的功能。
对于每个进程,我都将优先级提高到“高”或实时,但这似乎没有任何效果。我怎样才能让这些程序再次活跃起来并尽可能多地使用 CPU?这些进程具有重要的状态信息,我希望保留这些信息——有没有办法强制程序转储,然后从该转储中以相同的状态恢复?还有,为什么这些程序会在几天后停止使用全部容量(我猜是某种过热问题使它们进入睡眠状态,但我不知道)?谢谢。
编辑:其他可能相关的信息包括,这些进程可以发出互联网请求并读取/写入文件,据我所知,这可能会导致锁定。但是,由于它们似乎停止了(由 13% 的进程之一停止),它们写入的文件已成功更新,并且这些活动进程也成功进行了网络调用...
答案1
谜团(不幸)解决了:脚本在尝试进行网络调用时不知何故挂起了(尽管其他副本继续成功调用)。我不得不强制终止进程并丢失一些已生成的状态,但我重组了程序以在进行网络调用之前始终保存,这样如果将来发生这种情况,我就不会丢失状态。抱歉,解决方案并不更令人兴奋 - 似乎进程无法像我想象的那样处于睡眠状态。