python-shell和多处理不打印

Posted

技术标签:

【中文标题】python-shell和多处理不打印【英文标题】:python-shell and multiprocessing not printing 【发布时间】:2020-03-30 22:16:35 【问题描述】:

我有问题。 我使用 nodejs 的 python-shell npm 包,它允许向 python 发送 IPC 消息,并将 python 脚本的打印语句作为 IPC 读取。

所以首先我创建了一个完全工作的 python 脚本,它接受标准输入并打印到标准输出。

然后我实现了python-shell IPC向python脚本发送消息,一切正常。

当我在 python 脚本中创建一个进程(使用 multiprocessing.Process)并将活动移植到那里时,问题就开始了。

在这里我注意到新创建的进程的标准输出不是通过 python-shell 接收的!但怎么可能呢?

进程标准输出与运行它的脚本不一样吗?

可在previous post 找到有关同一问题的示例可调试代码。

请 - 任何线索都可以提供帮助。

【问题讨论】:

【参考方案1】:

可能与我目前正在做的事情相同。您可以使用 PythonShell。看个例子你就明白了。

var myPythonScriptPath = 'script.py';

// Use python shell
var PythonShell = require('python-shell');
var pyshell = new PythonShell(myPythonScriptPath);

pyshell.on('message', function (message) 
// received a message sent from the Python script (a simple "print" statement)
console.log(message);
);

// end the input stream and allow the process to exit
pyshell.end(function (err) 
if (err)
    throw err;
;

console.log('finished');
);

如果您仍有问题,请告诉我。快乐编码。

【讨论】:

我在做同样的事情 那是什么问题? 来自 multiprocessing.Process 进程的 python prints() 不会被 pyshell.on() 捕获 我也在做多处理。你使用 child_process 吗?

以上是关于python-shell和多处理不打印的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue Python-Shell:如何提供自己的库?

多处理和多线程

Python 子进程、通信和多处理/多线程

python中的Selenium和多处理

Python 代码覆盖率和多处理

python-daemon 和多处理库之间的区别