擅长:python、mysql、java
<p>最简单的解决办法是投票。这里我从Selenium的<a href="https://github.com/SeleniumHQ/selenium/blob/master/py/selenium/webdriver/support/wait.py#L26" rel="nofollow noreferrer">WebDriverWait</a>类中获得灵感。你知道吗</p>
<pre><code>from time import time, sleep
class Waiter(object):
def __init__(self, poll=0.5, timeout=60):
self.poll = poll
self.timeout = timeout
def until(self, callable, message='Timed out'):
end_time = time() + self.timeout
while True:
value = callable()
if value:
break
sleep(self.poll)
if time() > end_time:
raise Exception(message)
</code></pre>
<p>要使用上面的类,只需初始化它并将一个可调用的函数传递给它的<code>until()</code>方法。你知道吗</p>
<pre><code>import os
wait = Waiter()
wait.until(lambda: os.path.exists('fake.txt'))
</code></pre>