首页 > 解决方案 > 用python多处理新终端窗口

问题描述

我正在使用多处理,我想问是否有一些选项可以在 Ubuntu 中使用新的终端窗口创建新进程我有 3 个进程同时启动,但我希望它们在每个单独的终端中得到结果谢谢

标签: pythonterminalmultiprocessingpython-multiprocessinggnome-terminal

解决方案


不。遗憾的是,没有*方法可以在 python 中做你想做的事,因为 python 无法控制它正在运行的终端。

我认为你想要的是将消息与不同的进程分开,这样你就可以看到发生了什么。我有时为此做的(仅在测试中!)是让每个进程记录到不同的文件,然后在三个终端窗口中观察这三个文件。您可以在 bash 中使用watch甚至是一个简单的循环来执行此操作:while

watch -n 3 "cat /my/output/file" # or:
while true; do cat /my/output/file; sleep 3; done

当然你可以cat用更有用的东西代替,也许tail. 或者您可以只在具有自动恢复功能的文本编辑器中打开输出文件(例如带有 的 Emacs M-x auto-revert-mode)。这在内部执行完全相同的操作——轮询文件以进行更改并在需要时进行更新。

我还真的建议您logging在代码中使用,并为每个并行函数提供它自己的记录器(名称源自函数的参数)。(使用小类而不是函数会更容易)。这样以后您可以将所有输出发送到一个文件,如果出现问题,您可以轻松找出哪个运行失败并仅从该运行中提取信息(使用 grep!)。我在并行模糊匹配代码中使用这种方法(实际上是用于匹配音乐库),当您需要深入了解一些奇怪的结果是如何发生时,它是非常宝贵的。


*好吧,我敢肯定有一些可怕的方法来控制某些特定的终端并输出到它,但这不是你的意思。


推荐阅读