gpt4 book ai didi

node.js - 读取Node中的文件并进行相同的处理

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:11 26 4
gpt4 key购买 nike

我想读取一个文件并处理文件的每一行。我使用 readStream 读取文件,然后调用 processRecord 方法。 processMethod 需要进行多次调用,并且需要在将数据写入存储之前生成最终数据。

该文件有 500K 条记录。

我面临的问题是,文件的读取速度很快,我相信 Node 没有获得足够的优先级来实际处理 processLine 方法。因此,内存飙升至 800MB,然后速度减慢。

感谢任何帮助。

我使用的代码如下 -

var instream = fs.createReadStream('C:/data.txt');
var outstream = new stream;

var rl = readline.createInterface({
input: instream,
output: outstream,
terminal: false
});
outstream.readable = true;

rl.on('line', function(line) {

processRecord(line);
}

最佳答案

Node.js readline 模块更多地用于用户交互,而不是从文件中逐行流式传输。流行的byline可能会给你带来更好的运气。包。

var fs = require('fs');
var byline = require('byline');

// You'll need to check the encoding.
var lineStream = byline(fs.createReadStream('C:/data.txt', { encoding: 'utf8' }));

lineStream.on('data', function (line) {
processRecord(line);
});

如果数据通过管道传输到另一个流,您将有更好的机会避免内存泄漏。我在这里假设 processRecord 正在输入其中一个。如果你成功了a transform stream object ,然后就可以使用管道了。

var out = fs.createWriteStream('output.txt');

lineStream.pipe(processRecordStream).pipe(out);

关于node.js - 读取Node中的文件并进行相同的处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21240631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com