0

我在 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
4

0 回答 0