我在 wexpect 中遇到了一个奇怪的错误。我不知道为什么我会遇到这种行为,或者是否存在解决方法。如果我不与进程交互,expect() 需要越来越多的时间才能返回。最奇怪的是,经过的时间会慢慢接近两条发送线之间的时间(不活动时间)。两条 sendline 之间的时间越长,执行新的 sendline() 后返回的时间越长。
重现
import wexpect
import time
child = wexpect.spawn('cmd.exe')
child.expect('>')
for _ in range(10):
child.sendline('echo "hello"')
starting_time = time.time()
child.expect('>')
print("Expect Elapsed time:",time.time() -starting_time)
time.sleep(5) #if you execute sleep(10) expect will soon take 10 seconds instead of 5
child.sendline('exit')
child.wait()
预期行为 “预期经过时间”不应该取决于我没有与流程交互的时间。
输出 预期经过时间:0.07507729530334473
Expect Elapsed time: 2.6089940071105957
Expect Elapsed time: 3.860004425048828
Expect Elapsed time: 4.498199224472046
Expect Elapsed time: 4.816983938217163
Expect Elapsed time: 4.947844982147217
Expect Elapsed time: 5.021565198898315
Expect Elapsed time: 5.082917213439941
Expect Elapsed time: 5.092726707458496
Expect Elapsed time: 5.106329441070557
环境:
- [windows 版本] 21H1 - Build 19043.1348
- 【Python版】3.85
- [我们期待版本] 4.0.0