Python:如何在循环中设置计时器?

时间:2014-03-27 03:57:55

标签: python python-2.7

我想阻止我的for循环中的停顿。

import datetime as dt
shopping_list = ['eggs','milk','bread']
def buy_item(item):
    connect_to_website()
    send_order_instruction(item)
    disconnect()

for i in range(0,len(shopping_list)):
    item = shopping_list[i]
    time_elapsed = 0
    start_time = dt.datetime.now()
    while time_elapsed < 60:
        buy_item(item)
        check_time = dt.datetime.now()
        time_elapsed = check_time - start_time

buy_item()登录网站并完成购买程序。但有时它会因为互联网连接,项目未找到,网站暂时暂停,或其他一些原因而卡在某个项目上。功能只是停滞不前。我尝试使用while循环,但这没有用。如果停止超过1分钟,如何使循环跳过项目?是否有可能使循环跳过特定项目的buy_item?尝试在这种情况下是否合适?只是大声思考。谢谢您的帮助。我真的很感激。

2 个答案:

答案 0 :(得分:1)

import threading

thread = threading.Thread(target=buy_item, args=(item,))
thread.start()

这将对buy_item进行异步调用,你可以在线程内部执行sys.exit()或者可以使用thread.join()

等待线程完成

最好在python中查找线程模块或多进程模块以进行异步调用。

答案 1 :(得分:0)

您不需要自己编码。它应该内置在用于处理HTTP请求的任何软件中。

例如,requests库允许您将其配置为get()方法的附加参数。旧的urllib2库也有一个超时参数。任何好的HTTP客户端库或软件都将具有此功能;如果你没有,那就更难看,或者找另一件软件。

您可能需要尝试/除了处理从HTTP软件抛出的超时。