Alien-Ka
@Alien-Ka
Я девочка и не хочу платьице. Я хочу кофе и кодить

Как не ждать окончания вызова функции в Python?

Итак, у меня есть функция вида:

import time

def f(a):
   if(a>1):
      time.sleep(3600)

f()
#код выполняется дальше


Такую функцию я привела как пример функции, которая выполняется очень долго. Как вызвать функцию и не ждать окончания ее выполнения?

Хотелось бы услышать краткий ответ, а не рекомендацию вида "Прочитай трехтомник Лутца и все поймешь"
  • Вопрос задан
  • 2724 просмотра
Решения вопроса 2
@bromzh
Drugs-driven development
https://docs.python.org/3/library/threading.html
Только учти, что у питона есть глобальная блокировка, и такое распараллеливание будет весьма условным.
А вообще, всё зависит от задачи. Если ты пишешь что-то сетевое, то лучше взять tornado/asyncio или celery
Ответ написан
Комментировать
angru
@angru
В общем-то предыдущие ораторы правы, но вот чуть более развернуто:

тут зависит от того что делает функция, если нагружает процессор, например, вычислениями - берите потоки, если операция ввода/вывода(лезет в базу, скачивает файлы по сети) - предпочтительнее, на мой взгляд, взять асинхронный фреймворк, если у вас третий питон - берите asyncio, если второй - тут выбор большой gevent/tornado/twisted

P.S. если функция ничего не возвращает, то и return делать не надо
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы