функция time() (python)

#python #sockets #time #irc

#python #сокеты #время #irc

Вопрос:

     if data.find('!google') != -1:
     nick = data.split('!')[ 0 ].replace(':','')
     if last_google   5 > time.time():
        sck.send('PRIVMSG '   chan   " :"   ' Wait a few seconds'   "rn")
     else:
           last_google = time.time()
           try:
                gs = GoogleSearch(args)
                gs.results_per_page = 1
                results = gs.get_results()
                for res in results:
                    sck.send('PRIVMSG '   chan   " "   res.title.encode("utf8")   'rn')
                    sck.send('PRIVMSG '   chan   " "   res.url.encode("utf8")   'rn')
                    print
           except SearchError, e:
                    sck.send('PRIVMSG '   chan   " "   "Search failed: %s" % e   " "   'rn')
  

Хорошо, я пытаюсь заставить скрипт подождать несколько секунд, прежде чем другой пользователь сможет «!google», чтобы пользователи не наводняли канал или бота.. Очевидно, что этот скрипт не работает, я неправильно реализую функцию time или что-то упускаю

Комментарии:

1. Где существует last_google переменная? Это локальная переменная, переменная класса, глобальная переменная или что? Что вы увидите, если распечатаете текущее значение last_google перед сравнением?

Ответ №1:

Это все в цикле?

Одна из проблем заключается в том, что вы задаете last_google значение time.time() в начале вашего запроса. Если запрос выполняется медленно, часть этого времени может уже пройти к тому времени, когда вы снова перейдете к оператору if.

Типичный блок «ожидания» может выглядеть примерно так:

 while time.time() < last_google   5:
    sleep(1) # You don't want to keep using the cpu, so let your process sleep
  

Комментарии:

1. Я думаю, что функция sleep () полностью остановит скрипт, я попробовал цикл while, но он ничего не делает

2. Если то, что вы хотите сделать, это остановить ваш скрипт на определенное время, time.sleep (x) — это способ сделать это. Если вы всегда пытаетесь подождать 5 секунд с момента установки last_google, поместите sleep(last_google 5 - time.time()) в свой оператор if. Как и спрашивал Грег Хьюджилл, важен контекст, в котором выполняется этот код, поэтому вам нужно будет предоставить нам немного больше информации для получения дополнительной помощи.