有没有办法限制excel在运行时可以访问的CPU使用量?我有一个VBA脚本,可以计算一堆巨型数组公式。使用100%的CPU,整个计算可能需要20分钟,但我不能在此期间使用我的机器,而是希望它在后台以50%的CPU使用率运行,因此我可以继续做其他事情。有什么建议?
我的操作系统是Windows 7 Enterprise 64位,Excel版本是2007-32位
有没有办法限制excel在运行时可以访问的CPU使用量?我有一个VBA脚本,可以计算一堆巨型数组公式。使用100%的CPU,整个计算可能需要20分钟,但我不能在此期间使用我的机器,而是希望它在后台以50%的CPU使用率运行,因此我可以继续做其他事情。有什么建议?
我的操作系统是Windows 7 Enterprise 64位,Excel版本是2007-32位
Answers:
如果从多个公式调用VBA函数或者如果您的脚本生成或强制重新计算多个公式,那么这绝对应该使用 多线程计算 Excel的功能。这将分别为每个公式运行VBA函数的多个实例,或者在vba脚本在单个线程上运行时同时重新计算多个单元格。
您可以限制Excel用于在Excel选项...高级选项卡...公式部分中重新计算公式的线程数。
请尝试更改任务管理器中的关联,而不是降低优先级。如果您有超过1个CPU,则可以限制Excel将使用的CPU数量。这将释放其他CPU来处理其他事情。
在“进程”选项卡中右键单击Excel,然后选择“设置关联性”。选择要运行Excel的CPU。
您可以尝试通过查找打开任务管理器,切换到“详细信息”或“进程”选项卡(取决于您的Windows版本),右键单击excel.exe进程并选择一个来降低Excel进程的优先级。优先级较低。这应该为其他进程提供更多的CPU时间。
VBA或声明中提供睡眠和等待功能。然而,“过于简单的经验法则”是永远不要使用Sleep()。 (google'“从不使用sleep()”编程')
Application.Wait的Doc页面( https://msdn.microsoft.com/en-us/library/office/ff822851.aspx )。请注意,睡眠和等待将导致Excel在您指定的持续时间内无响应,这可能会导致时间片“火车残骸”。
如果你的计算涉及某种循环,那么为你的特定目的处理这个问题的一种方法(CPU可用性的计算时间)是你自己的特殊等待函数,例如循环DoEvents()1秒钟和然后回来。
DoEvents基本上告诉您的代码/解释器放弃操作系统等的时间。这肯定会导致您的代码需要更长的时间。它还可以允许您在计算过程中编辑工作表,因此您的milage可能会有所不同。测试。
例如,见 https://stackoverflow.com/questions/469347/is-there-an-equivalent-to-thread-sleep-in-vba
几年前有人问过一个类似的问题: 是否存在可以限制进程的CPU使用率的解决方案?
Process Tamer适用于Windows 7。 http://www.donationcoder.com/Software/Mouser/proctamer/
如果您在64位操作系统中使用32bi办公室,则应使用此应用程序: http://www.ntcore.com/4gb_patch.php
这个应用程序将使excel或任何其他办公室32位使用mo
使用OpenOffice或LibreOffice:它的脚本功能比MS更有效,你可以在计算中实现“节流”。
编辑:为什么downvote?看看 手册 并亲眼看看。您可以将计算转换为Java 正好 例如,具有JVM的所有限制功能。