我非常擅长将Node.js和WebWorker-Threads用于Node.js(https://github.com/audreyt/node-webworker-threads)。 WebWorker-Threads模块基于Thread-A-Gogo(https://github.com/xk/node-threads-a-gogo)。
以下是我的问题摘要:
我有一个名为" readFile.js"的文件,其中包含读取csv的代码 传入的文件,并将csv数据转换为2D数组。
我想要的功能"" exports.parseCSV"在" readFile.js"成为 每个线程在多个工作线程中加载和执行 并行运行。
我有一个文件" test1.js",它试图通过使用 线程池:
的
var Threads = require('webworker-threads');
var parser = require('./readFile.js');
var numThreads = 3;
var threadPool = Threads.createPool(numThreads);
threadPool.all.eval(parser.parseCSV);
for (var i = 1; i <=3; i++) {
(function(i) {
threadPool.any.eval(parser.parseCSV("csvFile.csv"), function (err, val) {
if (i == 3) {
console.log("bye!");
threadPool.destroy();
}
});
})(i);
}
的
function cb (err, result) {
if (err) {
console.log("\n" + " ERROR! ERROR! ERROR!");
throw err;
}
console.log(" NO ERROR!");
thread.destroy();
}
var Threads = require('webworker-threads');
var parser = require('./readFile.js');
var thread = Threads.create();
thread.eval(parser.parseCSV);
thread.eval(parser.parseCSV("csvFile.csv"), cb);
thread.eval(parser.parseCSV);
thread.eval(parser.parseCSV("csvFile.csv"), cb);
thread.eval(parser.parseCSV);
thread.eval(parser.parseCSV("csvFile.csv"), cb);
node test[x].js
的文件,线程似乎正在工作,但它看起来好像是按顺序执行,而不是并行执行。我根据每个线程开始的时间输出来说这个,我打印到命令提示符窗口。如何在后台执行多个并行运行的Webworker-Threads?我希望线程同时启动并以相同的方式结束(如果可能的话)。我查看了WebWorker-Threads的API,但我还没有能够解决这个问题。一旦这个工作,我想使用相同的方法不仅读取csv文件,而且还将其内容存储到数据库中。
任何帮助将不胜感激!非常感谢你:))