Top.Mail.Ru
Ответы

Как сделать выполнение цикла на определенное время?

У меня есть база сокет сервера на питоне. Мне нужно что бы пакеты которые принимает сервер шли не больше чем в установленный срок. Пакеты, как мне известно, можно принять путем некого цикла client.recv( bites ). Такой цикл заставляет код остановится и не выполнятся до тех пор, пока он не получит какую либо дату в ответ. Из этого и проблема. Если мне нужно принять пакет в течении трех секунд, я вынужден запустить цикл, который будет работать до тех пор, пока не получит пакет. Время ожидания увеличивается во много раз, ведь код не будет выполнятся дальше, пока не получит какую либо дату от клиента. А после соответственно проверяется стоит ли уже обрабатывать дату, или время на ее принятие вышло. В этом и проблема. Как можно сделать паралельную обработку client.recv(...) с условием, что функция прекратит свое выполнение если время жизни пакета истекло? Пытался изучить библиотеку multiprocessing, но как то не понял как она будет выполнять два процесса одновременно, один из которых будет являтся бесконечно повторяющейся функцией, ведь следующий процесс не выполнится до тех пор, пока не завершится client.recv(...), т. е пока не получит дату.

По дате
По Рейтингу
Аватар пользователя
Ученик

через библиотеку time попробуй.
import time

while client = TRUE:
proshlo.time()
if proshlo < "твоё время":
твой код

Аватар пользователя
Оракул
7лет

если я правильно понял твой вопрос, то тебе нужно смотреть в сторону асинхронного программирования.