Как одновременно запустить несколько бесконечных циклов в Python?

Рейтинг: 0Ответов: 1Опубликовано: 12.05.2023

Нужно одновременно выполнить несколько бесконечных циклов, но программа выполняет только первый поток с первым while True.

import time
from threading import Thread

class Thread1(Thread):
    while True:
        time.sleep(2)
        for i in range(1):
            print("Hello")

class Thread2(Thread):
    while True:
        time.sleep(4)
        for i in range(1):
            print("Привет")

class Thread3(Thread):
    while True:
        time.sleep(6)
        for i in range(1):
            print("Здравствуйте")

t1 = Thread1()
t1.start()
t2 = Thread2()
t2.start()
t3 = Thread3()
t3.start()

Ответы

▲ 2Принят

Не надо писать свои классы, наследующие от threading.Thread. Ваш код должен выглядеть так:

import time
from threading import Thread


# Пишем функции для каждого потока
def thread1_func():
    while True:
        time.sleep(2)
        for i in range(1):
            print("Hello")


def thread2_func():
    while True:
        time.sleep(4)
        for i in range(1):
            print("Привет")


def thread3_func():
    while True:
        time.sleep(6)
        for i in range(1):
            print("Здравствуйте")



t1 = Thread(target=thread1_func)  # В именованный аргумент `target` передаём функцию,
t1.start()                        # которая будет выполнятся в этом потоке.
t2 = Thread(target=thread2_func)
t2.start()
t3 = Thread(target=thread3_func)
t3.start()