在同一台服务器上同时运行相同的Pexpect程序,但终端不同

2024-04-29 10:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python pexpect代码,比如Program1.py,它使用pexpect.spawn并在pexpect中使用sendline和expect模块执行必需的操作。在

如果我试图运行同一个程序,在每次程序登录到两个不同的路由器时,从服务器上的多个提示中,只有一个程序似乎获得expect()输入,而另一个程序实例在child.expect()->;读取non_blocing()时超时

示例:

在我的RHEL服务器上的prompt-1中,我执行程序,用ARGs登录到路由器X

bash$ python program1.py 10.11.12.13/2001 configure_MGMT

在我的RHEL服务器上的Prompt-2中,我执行程序,用参数登录到路由器Y

^{pr2}$

其中一个程序成功运行,而另一个在第一个child.expect()调用时超时。在

这是因为GIL吗?在

有解决办法吗?
(我希望在这里避免多处理,因为我的web服务器处理多处理方面,并多次执行同一个程序。)


Tags: 模块实例代码py程序服务器child路由器
2条回答

GIL与此无关,因为独立进程不共享GIL。最可能的原因是你的路由器一次只支持一次登录。验证问题是否存在的最简单方法是通过同时从两个不同的终端会话手动登录到路由器,从等式中删除Python。在

找到了答案。由于python程序总是同步执行而不是并行执行的,所以当进程等待调度时,pexpect将超时等待输入。在

要将所有这些进程作为后台进程并行运行,我们需要在执行CLI的末尾使用“&;”。在

示例:

bash$python program1.py 20.20.12.13/2020配置管理

谢谢

相关问题 更多 >