Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 5, 2023 11:45:03

neekyytah
Зарегистрирован: 2023-10-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с потоками

Помогите с лабой…
Нужно сделать программу которая запускает 3 потока одновременно разных по скорости. Когда счетчик 3 потока (самого медленного) дойдет до 120 он должен его остановить, при этом 1 и 2 должны продолжаться пока не будут остановлены в ручную клавишей q. Все потоки так же могут быть остановлены в любой момент клавишей q. Не могу понять как это сделать, нашел программу которая просто останавливает потоки по очереди, когда значение их счетчика дойдет до 120, но не так как нужно

Офлайн

#2 Окт. 5, 2023 12:34:00

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2586
Репутация: +  60  -
Профиль   Отправить e-mail  

Работа с потоками

 import threading
import time
import sys
# Функция, выполняемая в каждом потоке
def worker(counter, speed):
    while not stop_event.is_set():
        counter[0] += 1
        print(f"Thread {speed}: Counter = {counter[0]}")
        time.sleep(1 / speed)
# Создаем счетчики и событие для остановки потоков
counter1 = [0]
counter2 = [0]
counter3 = [0]
stop_event = threading.Event()
# Создаем и запускаем потоки
thread1 = threading.Thread(target=worker, args=(counter1, 1))
thread2 = threading.Thread(target=worker, args=(counter2, 2))
thread3 = threading.Thread(target=worker, args=(counter3, 3))
thread1.start()
thread2.start()
thread3.start()
# Ожидаем нажатия клавиши 'q' для остановки
try:
    while True:
        if sys.stdin.read(1) == 'q':
            stop_event.set()
            break
except KeyboardInterrupt:
    pass
# Дожидаемся завершения потоков
thread1.join()
thread2.join()
thread3.join()
print("All threads have stopped.")

В этом примере создаются три потока (thread1, thread2, thread3), каждый из которых имеет свой счетчик и скорость. Клавишей ‘q’ можно остановить все потоки. При этом поток с самой низкой скоростью (thread3) остановится, когда его счетчик достигнет 120.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Окт. 6, 2023 15:53:44

neekyytah
Зарегистрирован: 2023-10-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с потоками

Каким образом третий поток остановится на 120? Где это фигурирует? Это решение из chatgpt? Извиняюсь, просто нет сейчас возможности проверить

Офлайн

#4 Окт. 7, 2023 04:12:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

Работа с потоками

neekyytah
Каким образом третий поток остановится на 120? Где это фигурирует?
Он не остановится. Ты просто код не привёл никакой свой, потому что думал, что тут тебе филиал благородных девиц. Поэтому в ответ тебе то же самое отправили.

neekyytah
Это решение из chatgpt?
Похоже, что так. Только эта нейросеть врёт и не краснеет обычно.



Офлайн

#5 Окт. 7, 2023 09:45:23

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2586
Репутация: +  60  -
Профиль   Отправить e-mail  

Работа с потоками

neekyytah
Каким образом третий поток остановится на 120? Где это фигурирует? Это решение из chatgpt? Извиняюсь, просто нет сейчас возможности проверить
Это пример над которым вам надо было подумать и добавить 3 строчки



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version