@ID6
Держитесь подальше от негативных людей

Как выйти из цикла в другой функции?

import time
def start_stop(current_bool):
    while current_bool:
        time.sleep(1)
        print("Цикл все еще работает")

start_stop(True)
time.sleep(3)
start_stop(False)


Что угодно уже пробовал и через continue и if ... break
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
@R0Zi
Используй потоки, threading

import time
import threading

def start_stop():
    while current_bool:
        time.sleep(1)
        print("Цикл все еще работает")

current_bool = True

threading.Thread(target=start_stop).start()

time.sleep(3)
current_bool = False
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Vindicar
@Vindicar
RTFM!
Никак*. Осознай, что операторы выполняются последовательно. Пока start_stop(True) не закончит выполнение, time.sleep() даже не начнёт выполняться, не говоря уже о последующем. А start_stop(True) не закончит выполнение никогда, потому что ты сделал вечный цикл.

Также меня несколько настораживает поставленный тобой тег aiogram, потому что использование time.sleep() в асинхронных приложениях - плохая идея. Это наводит на мысль, что тебе стоит сначала понять как следует работу асинхронных приложений. Вот одиндругой) из моих старых ответов, может поможет начать.
*

Можно организовать несколько потоков выполнения через threading или же вести асинхронную разработку на корутинах. Смешивать эти два подхода очень не советую, так что сначала определись, который использовать.
Ответ написан
GavriKos
@GavriKos
Сделать current_bool глобальной для контекста обоих вызовов
Ответ написан
Комментировать
@rPman
в 3.5 версии python завезли async/await

и вообще избавляйся от синхронных вызовов и переделывай все на асинхронные
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы