Python 如何在等待API返回值时等待并显示进度信息
下面是我等待方法调用返回响应的代码。此响应可能需要10到15秒以上 我需要在用户等待方法返回响应时显示一条进度消息。 我的while状态似乎没有显示进度条Python 如何在等待API返回值时等待并显示进度信息,python,Python,下面是我等待方法调用返回响应的代码。此响应可能需要10到15秒以上 我需要在用户等待方法返回响应时显示一条进度消息。 我的while状态似乎没有显示进度条 response = my_api.execute("get some data") # There is a 10-15 minute delay here... i = 0 while response is None: sys.stdout.write('\r') sys.stdout.write("Fetching MO at
response = my_api.execute("get some data")
# There is a 10-15 minute delay here...
i = 0
while response is None:
sys.stdout.write('\r')
sys.stdout.write("Fetching MO attribute [%-20s] %d%%" % ('=' * i, 5 * i))
sys.stdout.flush()
sleep(0.25)
i += 1
if response.get_output() != "1 instance(s)":
raise MyError('Could not fetch data. )
for line in response.get_output():
# Do the actual processing
您需要线程,一个用于主后台进程,一个用于显示进程:
import sys
import time
import threading
import itertools
done = False
response = None
def animate():
i = 0
while response is None:
sys.stdout.write('\r')
sys.stdout.write("Fetching MO attribute [%-20s] %d%%" % ('=' * i, 5 * i))
sys.stdout.flush()
time.sleep(0.25)
i += 1
t = threading.Thread(target=animate)
t.start()
# background process
response = my_api.execute("get some data")
done = True
您需要线程,一个用于主后台进程,一个用于显示进程:
import sys
import time
import threading
import itertools
done = False
response = None
def animate():
i = 0
while response is None:
sys.stdout.write('\r')
sys.stdout.write("Fetching MO attribute [%-20s] %d%%" % ('=' * i, 5 * i))
sys.stdout.flush()
time.sleep(0.25)
i += 1
t = threading.Thread(target=animate)
t.start()
# background process
response = my_api.execute("get some data")
done = True
python中有一个集成的库来实现这一点 研究TQM 它非常有用,不需要从头开始构建
如果您确实想从头开始构建一些东西,我相信您需要使用线程,正如前面的回答所述 python中有一个集成的库可以实现这一点 研究TQM 它非常有用,不需要从头开始构建
如果您确实想从头开始构建一些东西,我相信您需要使用线程,正如前面的回答所述 while循环仅在
my_api.execute()
返回后执行,显然此时response
不是None
,因此while循环体永远不会进入。while循环仅在my_api.execute()
返回后执行,显然在这一点上,response
不是None
,所以while循环体永远不会被输入。这里的数字500000是多少?这使得我的代码等待的时间太长,甚至超过了100%,因为在while循环中使用了180%…230%。你需要做的是决定进度条本身,决定驱动进度条的检查点,使其保持在边界内。这里的数字500000是多少?这使得我的代码等待的时间太长,甚至超过了100%,因为在while循环中使用了180%…230%。您需要做的是决定进度条本身,决定驱动进度条的检查点,使其保持在边界内。