第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

操作完成后殺死所有節(jié)點(diǎn)集群工作人員

操作完成后殺死所有節(jié)點(diǎn)集群工作人員

慕的地8271018 2023-10-20 16:07:31
我正在嘗試創(chuàng)建一個(gè)集群來(lái)在 CPU 之間傳播散列,找到散列返回的集群供我使用,并在第一個(gè)響應(yīng)時(shí)殺死所有其他工作人員。我通過(guò)創(chuàng)建集群并運(yùn)行函數(shù)來(lái)開(kāi)始我的代碼,然后將“發(fā)送”添加回主服務(wù)器,然后嘗試添加邏輯來(lái)殺死所有工作人員,我已閱讀文檔 Killing Node.js Workers after function is done作為參考,但它似乎不起作用 - 我可以看到 Node 操作仍在后臺(tái)運(yùn)行(在 2 核機(jī)器上),使用大量 CPU ,那么即使 Node 進(jìn)程完成并返回到 bash 終端,我也會(huì)得到一些控制臺(tái)日志。我一生都無(wú)法弄清楚我哪里出了問(wèn)題,所以任何幫助將不勝感激。我當(dāng)前的代碼是:if (cluster.isMaster) {    for (let i = 0; i < numCPUs; i++) {        let worker = cluster.fork();    }    cluster.on('exit', function(worker, code, signal) {        for (var id in cluster.workers) {            cluster.workers[id].kill();        }        process.exit(0);    });    function messageHandler(msg) {        console.log(msg);        if (msg.hash.length > 1) {            console.log(msg.hash);        }    }    for (const id in cluster.workers) {        cluster.workers[id].on('message', messageHandler);    }} else {    console.log(`Worker ${process.pid} started and finished`)    console.log(parseInt(cluster.worker.id));    let difficulty = 5;    i = cluster.worker.id;    var start = new Date();    var hrstart = process.hrtime();    hash = computeHash(index, lasthash, timestamp, data, i);    while (hash.substring(0, difficulty) !== Array(difficulty + 1).join("0")) {        hash = computeHash(index, lasthash, timestamp, data, i);        i = i + cluster.worker.id;    }    var end = new Date() - start,        hrend = process.hrtime(hrstart);    console.info('Execution time (hr): %ds %dms', hrend[0], hrend[1] / 1000000)    console.log("Hash found from: " + i);    process.send({        hash: hash    });    process.exit(0);}
查看完整描述

1 回答

?
達(dá)令說(shuō)

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

好吧,我設(shè)法以一種相當(dāng)古怪的方式解決了這個(gè)問(wèn)題。我發(fā)現(xiàn)在 Windows 上其他地方提供的答案確實(shí)有效(即):


for (var id in cluster.workers) {

    cluster.workers[id].kill();

 }

然而在 Linux 上,即使終止 master,進(jìn)程仍然會(huì)運(yùn)行。如果您像我一樣并且對(duì)您的孩子使用阻止代碼,則它將不起作用(無(wú)論出于何種原因,我也無(wú)法在函數(shù)中添加超時(shí))。


我解決這個(gè)問(wèn)題的方法是獲取循環(huán)內(nèi)所有剩余工作人員及其 pid 的列表,就像以前一樣,只是這次使用 process.kill 和剩余工作人員的 pid (如下所示:)


  for (var id in cluster.workers) {

   console.log("Killing remaining processes");

   let process_id = cluster.workers[id].process.pid;

   process.kill(process_id);

 }

這個(gè)解決方案很hacky,但它有效,而且例子非常有限,所以我希望這可以幫助別人。


查看完整回答
反對(duì) 回復(fù) 2023-10-20
  • 1 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)