大概代码就是使用settimeout递归循环不断获取数据,并将所得到的数据不断存到全局变量数组里去,程序在运行到3千次左右,会发生进程卡住不动了,请问这个是什么原因呢?
代码放出来看看呢,原则上是不会有这样的问题的
@hyj1991 github传送门这个我是里面用子进程获取数据,然后通过全局数组进行保存,再送入机器学习
@oyosc 太长了。。。你贴点定时器获取数据的核心代码出来就行了
@hyj1991 ’var processData = function(){
if(numberOfTrades<machineData.length && numberOfTrades+ batchSize<machineData.length){ i++; console.log("count:", i); var arry = []; for(var j = numberOfTrades; j<machineData.length&&j<batchSize+numberOfTrades; j++){ arry.push(machineData[j]); } var reward = 0; var action = brain.forward(arry); console.log("j=" + j); if(j < machineData.length){ if(actions[action] == 'BUY'){ numberOfActualTrades += 1; reward += parseFloat(machineData[j][5] - machineData[j][2]); } if(actions[action] == 'SELL'){ numberOfActualTrades += 1; reward += parseFloat(machineData[j][5] - machineData[j][2]); } if(reward>0){ positiveTrades += 1; } numberOfTrades += 1; brain.backward(reward);//此处是机器学习代码 console.log('numberOfTrades is ' + numberOfTrades); console.log('numberOfActualTrades is ' + numberOfActualTrades); console.log('positiveTrades is ' + positiveTrades); } else{ numberOfTrades = 0; } } setTimeout(processData, 1000); }
processData();’
多的可能是超出调用栈了,或者发起的异步操作太多阻塞了。 建议你用 async.forever(taskFn, function(error) { }) 来实现你的代码。 taskFn 处理完异步任务以后,用setTimeout 设置一下过一会儿在调用callback
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
代码放出来看看呢,原则上是不会有这样的问题的
@hyj1991 github传送门这个我是里面用子进程获取数据,然后通过全局数组进行保存,再送入机器学习
@oyosc 太长了。。。你贴点定时器获取数据的核心代码出来就行了
@hyj1991 ’var processData = function(){
processData();’
多的可能是超出调用栈了,或者发起的异步操作太多阻塞了。 建议你用 async.forever(taskFn, function(error) { }) 来实现你的代码。 taskFn 处理完异步任务以后,用setTimeout 设置一下过一会儿在调用callback