【问题标题】:Starting 2 parallel processes in different shell windows在不同的 shell 窗口中启动 2 个并行进程
【发布时间】:2015-07-24 06:37:29
【问题描述】:

我有两个功能:都用于在特定端口上启动服务器。比如:

from Multiprocessing import Process
import sys

def start_server1(port1):
  os.system("server1 --port %s" % port1)
def start_server2(port2):
  os.system("server2 --port %s" % port2)

port1 = arg.sys[1]
port2 = arg.sys[2]
p1 = Process(target=start_server1, args=(port1,))
p2 = Process(target=start_server2, args=(port2,))

这允许我在我的脚本中从terminal 启动两个服务器,例如

>>>python servers.py 8000 8001

但预计会为两台服务器显示很多跟踪,我想分别查看它们。所以问题是:如何使脚本从一个terminal shell 执行,进程p1 将在新shell 以及第二个进程p2 中启动?

感谢您的建议和建议

【问题讨论】:

  • os.system("server1 --port %s" % port1) 更改为os.system("\bin\bash server1 --port %s" % port1)?只是猜测,我没有 Linux 机器来测试它。

标签: python shell ubuntu multiprocessing


【解决方案1】:

您可以重定向文件中每个进程的输出。

os.system("server1 --port %s > server1.log" % port1)

然后,在单独的 shell 中对每个日志运行 tail 命令来监控它们。

tail -f server1.log

但是,如果您不想将这些进程的输出存储在文件中并想要单独的 shell 解决方案,则可以使用“xterm -e”选项。

xterm 的 -e 选项允许在单独的 xterm 窗口中运行 shell 命令。

os.system('xterm -e "server1 --port %s"'% port)

【讨论】:

  • 它的工作方式并不完全符合我的预期,但您给了我正确的方向。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 2021-11-27
相关资源
最近更新 更多