hello-world00
@hello-world00
Играю с Python,C

Как усыпить поток, пока в очереди не появятся данные?

У меня есть поток №1. И сейчас он в бесконечном цикле проверяет, есть ли в очереди какие-то данные.
А другой поток №2 при каком-то событии добавляет данные в очередь.
Данные поступают не каждую секунду, и поток №1 тратит много ресурсов впустую. Как можно заставлять работать поток №1 только когда появятся какие-то данные?
  • Вопрос задан
  • 504 просмотра
Пригласить эксперта
Ответы на вопрос 1
хоть это наверное и не правильно, но как вариант, - поставь sleep потоку на 0.1 секунды и процесс стразу станет более разгруженным, потому что не будет колошматить во всю мощь

import time
from threading import Thread


class Worker(Thread):
    def run(self):
        for x in range(0, 11):
            print(x)
            time.sleep(1)


class Waiter(Thread):
    def run(self):
        for x in range(100, 103):
            print(x)
            time.sleep(5)


print("Staring Worker Thread")
Worker().start()
print("Starting Waiter Thread")
Waiter().start()
print("Done")


import threading
import time


def print_hello():
    for i in range(4):
        time.sleep(0.3)
        print("Hello")


def print_hi():
    for i in range(4):
        time.sleep(0.9)
        print("Hi")


t1 = threading.Thread(target=print_hello)
t2 = threading.Thread(target=print_hi)
t1.start()
t2.start()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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