我目前正在使用与child_process.exec()结合的异步模块(https://github.com/caolan/async)。具体来说,我使用的是async.parallelLimit,它的一个参数接受一个任务数组(要执行的函数)。我的任务数组中的一个项目看起来像这样:
var tasks = [];
tasks.push(function() {
var startTime = Date.now();
exec('do the thing', function(err, stdout, stderr) {
var endTime = Date.now();
var timeTaken = endTime - startTime;
});
});
然后在我创建我的任务数组(以上是一个任务的示例)后,我将它们发送给 异步
async.parallelLimit(tasks, 2 /*maxWorkers*/, callback)
我注意到的是,无论何时检查总时间,它总是关闭......
我查看了child_process.spawn()事件,但没有一个听到发射器'open',尽管有'close'。
我想要做的是以某种方式向child_process()添加一个事件监听器,这样我就知道该进程何时启动,这样我才能正确获取进程开始和进程结束的时间戳。 / p>
更新:
所以在做了一些更多的测试后,我意识到我一直在正确地做这个,我只是忘了除以1000,因为最终结果是以毫秒为单位。这是深夜....>。<
答案 0 :(得分:1)
使用time
为命令添加前缀并解析该输出(可以自定义格式化以便于解析)呢?
答案 1 :(得分:1)
我会在父进程上打开服务器套接字,子进程可以随时通知该套接字任何数据,从而产生异步通知。
答案 2 :(得分:0)
所以在做了一些更多的测试后,我意识到我一直在正确地做这个,我只是忘了除以1000,因为最终结果是以毫秒为单位。这是深夜....>。<
在我意识到我没有将毫秒转换为秒的无意识错误之后,child_process.exec和child_process.spawn都正常工作。