我想处理长度大约为100 000的数组,而又不会给CPU造成太大的负担。我研究了流,偶然发现了highlandjs,但是我无法使其工作。
我也尝试过使用promise和成块处理,但是仍然给CPU带来了很大的负担,如果需要,程序可能会变慢,但是不应该给CPU带来负担
答案 0 :(得分:1)
使用node.js以单线程运行Javascript,如果您希望服务器最大程度地响应传入的请求,则需要从http服务器主进程中删除所有占用大量CPU的代码。这意味着需要以其他方式进行CPU密集型工作。
有很多不同的方法可以做到这一点:
child_process
模块启动另一个nodejs应用程序,该应用程序旨在完成CPU密集型工作。如果您不经常执行CPU密集型工作,那么#1可能是最简单的。
如果您出于其他原因(例如处理大量传入请求)而需要扩展,并且您不经常执行CPU密集型工作#2。
如果您非常定期地执行占用大量CPU资源,并且希望传入请求处理始终具有最高优先级,并且您愿意让占用大量CPU资源的时间更长,那么#3(工作队列)可能是最好的选择并且您可以调整辅助进程的数量以优化结果。