Node.js 多进程处理CPU密集任务的实现
Node.js单线程与多进程
大家都知道Node.js性能很高,是以异步事件驱动、非阻塞I/O而被广泛使用。但缺点也很明显,由于Node.js是单线程程序,如果长时间运算,会导致CPU不能及时释放,所以并不适合CPU密集型应用。
当然,也不是没有办法解决这个问题。虽然Node.js不支持多线程,但是可创建多子进程来执行任务。
Node.js提供了child_process和cluster两个模块可用于创建多子进程
下面我们就分别使用单线程和多进程来模拟查找大量斐波那契数进行CPU密集测试
以下代码是查找500次位置为35的斐波那契数(方便测试,定了一个时间不需要太长也不会太短的位置)
单线程处理
代码:single.js
functionfibonacci(n){ if(n==0||n==1){ returnn; }else{ returnfibonacci(n-1)+fibonacci(n-2); } } letstartTime=Date.now(); lettotalCount=500; letcompletedCount=0; letn=35; for(leti=0;i