Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330

Бесконечный цикл с "кнопкой" остановки

31.07.2019, 18:21. Показов 7035. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть ф-ция, которая выполняется каждые n секунд, в моём случае это запрос к апи вк, для удобства, пусть будет просто func()
Допустим, пользователь вводит какие-то параметры, и запускается бесконечный цикл с time.sleep(10), а закончится он должен когда пользователь введёт в консоль "0".

Я, что бы пользователь мог что-то вводить в консоль, решил вынести ф-цию с циклом в отдельный поток, да вот с его остановкой возникли проблемы. Никто случаем не подскажет, как это правильно реализовать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2019, 18:21
Ответы с готовыми решениями:

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор?
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...

Цикл do/while. Страница в браузере, уходит в бесконечный цикл и ничего не выводит.
Помогите, страница в браузере, как я понял, уходит в бесконечный цикл и ничего не выводит. Если переменные без ввода обозначить сразу, то...

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h> #include <string.h> int main() { int x=0, y=0,...

3
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
01.08.2019, 01:02
Zagadohnik37, Похоже у Вас на туже тему, что и в
Как добавить горячие клавиши для запуска и остановки скрипта? Посмотрите какое дано решение там.
1
17 / 7 / 10
Регистрация: 25.05.2018
Сообщений: 46
01.08.2019, 17:36
Лучший ответ Сообщение было отмечено Zagadohnik37 как решение

Решение

Попробуйте через Queue.
Например, что-то такое:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import threading
import time
from queue import Queue
 
def foo(qu):
    print("Запущен поток foo")
    while True:
#       Полезная нагрузка
            print('abcd')
            s = None
            try:
                s = qu.get(block=False)
            except Exception:
                pass
 
            if s is not None and s == 0:
                break
            time.sleep(5)
    print("Выход из потока foo")
 
qu = Queue()
t1 = threading.Thread(target=foo, args=[qu])
t1.start()
 
stop = -1
print('Ткни 0 для выхода из потока или 255 для выхода вообще ...:')
while stop!=255:
    stop=int(input("# "))
    if stop == 0:
        qu.put(stop)
 
print("Выход")
1
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
01.08.2019, 18:23  [ТС]
Спасибо. Кстати, в инете я нашёл ещё и такой способ нашёл такой способ
Python
1
2
3
4
5
6
7
8
9
10
11
12
def mstf(stop, method, to, type):
    while not stop.wait(6):
        vkapi(method, {"peer_id" : to , "type" : type})
 
def ms():
...
    stop = threading.Event()
    mst = threading.Thread(target=mstf, args=(stop, 'messages.setActivity', "...", type))
    mst.start()
    #mst.join()   А для чего это нужно кстати?
    en = input("Для остановки введите \"0\" > ")
    stop.set() #Тут должна быть проверка с циклом, но делать мне её пока лень

Ну и в подарок оставлю эту ф-цию, как по мне, так удобно вышло
Python
1
2
3
4
5
6
7
8
9
vkapiurl = "https://api.vk.com/method/"
vkapiver = "5.101"
token = "***"
def vkapi(method,params):
    url = vkapiurl + method + "?" + "access_token=" + token + "&v=" + vkapiver
    for arg, value in params.items():
        url = url + "&" + arg + "=" + value
    r = requests.get(url)
    #print("\n > url: " + url, "\n > status code: ", r.status_code, "\n > headers: ", r.headers , "\n > text: ", r.text ,"\n")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.08.2019, 18:23
Помогаю со студенческими работами здесь

условие остановки(цикл)
while(???) { pos=st.find_first_not_of(m); st.replace(pos,1,""); } Вопрос в общем то прост: подкажите условие...

Цикл пропускает условие остановки
Доброго времени суток. Пишу функцию, возвращающую погрешность числа в узком смысле. То есть, для числа 1.0203 должно быть возвращено...

Бесконечный цикл
Добрый день всем,передо мной встала такая задача, написать прогу,которая будет считать количество чисел кратных 3 пока пользователь не...

Бесконечный цикл
$v_max = 350; $v_min = // значение постоянно разное, пусть будет 40 for ($i = $v_min; $i < $v_max; $i = $i + $v_min) { echo...

Бесконечный цикл
Всем привет. У меня задача пропарсить 1000 айдишников и вынять их имена. Проблема в том, что на n-нной позиции цикл отказывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru