我有一个python pexpect代码,比如Program1.py,它使用pexpect.spawn并在pexpect中使用sendline和expect模块执行必需的操作。在
如果我试图运行同一个程序,在每次程序登录到两个不同的路由器时,从服务器上的多个提示中,只有一个程序似乎获得expect()
输入,而另一个程序实例在child.expect()
->;读取non_blocing()
时超时
bash$ python program1.py 10.11.12.13/2001 configure_MGMT
其中一个程序成功运行,而另一个在第一个child.expect()
调用时超时。在
这是因为GIL吗?在
有解决办法吗?
(我希望在这里避免多处理,因为我的web服务器处理多处理方面,并多次执行同一个程序。)
GIL与此无关,因为独立进程不共享GIL。最可能的原因是你的路由器一次只支持一次登录。验证问题是否存在的最简单方法是通过同时从两个不同的终端会话手动登录到路由器,从等式中删除Python。在
找到了答案。由于python程序总是同步执行而不是并行执行的,所以当进程等待调度时,pexpect将超时等待输入。在
要将所有这些进程作为后台进程并行运行,我们需要在执行CLI的末尾使用“&;”。在
示例:
bash$python program1.py 20.20.12.13/2020配置管理
谢谢
相关问题 更多 >
编程相关推荐