![](/img/trans.png)
[英]python multiprocessing - sending child process logging to GUI running in parent
[英]Python [child] process sending message to Node [parent] process
NodeJS派生的Python進程-Python的process.send()的替代方案?
我遵循了上面的解決方案,但似乎沒有用(子python代碼未發送任何消息。這是我的代碼:
const spawn = require('child_process').spawn;
var child = spawn('python3', ['child.py'], {
stdio:[null, null, null, 'pipe']
});
child.on('message', function(message) {
console.log('Received message...');
console.log(message);
});
和
# !/usr/bin/python3
import os
os.write(3, str.encode("HELLO"))
我可以看到可能出了什么問題。 請幫忙。
我認為第四個參數需要是“ ipc”而不是“ pipe”以啟用這種樣式的消息傳遞。
'ipc'-創建一個IPC通道,用於在父級和子級之間傳遞消息/文件描述符。 一個ChildProcess最多可以具有一個IPC stdio文件描述符。 設置此選項將啟用subprocess.send()方法。 如果子級將JSON消息寫入此文件描述符,則將在父級中觸發subprocess.on('message')事件處理程序。 如果子進程是Node.js進程,則IPC通道的存在將啟用進程中的process.send(),process.disconnect(),process.on('disconnect')和process.on('message')。兒童。
https://nodejs.org/api/child_process.html#child_process_options_stdio
從默認情況下進行設置的fork的描述中(不同於其他語言的spawn):
stdio | 參見child_process.spawn()的stdio。 提供此選項后,它將覆蓋無聲。 如果使用數組變量,則它必須恰好包含一個值為'ipc'的項目,否則將引發錯誤。 例如[0,1,2,'ipc']。
https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.