子进程何时启动时是否有监听器?

时间:2014-04-12 03:34:03

标签: node.js asynchronous metrics child-process

我目前正在使用与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,因为最终结果是以毫秒为单位。这是深夜....>。<

3 个答案:

答案 0 :(得分:1)

使用time为命令添加前缀并解析该输出(可以自定义格式化以便于解析)呢?

答案 1 :(得分:1)

我会在父进程上打开服务器套接字,子进程可以随时通知该套接字任何数据,从而产生异步通知。

答案 2 :(得分:0)

所以在做了一些更多的测试后,我意识到我一直在正确地做这个,我只是忘了除以1000,因为最终结果是以毫秒为单位。这是深夜....>。<

在我意识到我没有将毫秒转换为秒的无意识错误之后,child_process.exec和child_process.spawn都正常工作。