Я пытаюсь понять, как неблокирующий поток с использованием очередей может создаваться по требованию в Python.Этот предмет довольно сложен для такого нуба, как я, и мне нужен простой пример, чтобы помочь мне в обучении.
Пример:
Скажем, у меня есть main script
, который постоянносоздает новый каталог и записывает некоторые изображения в файлы внутри этого каталога.Как я могу затем выполнять вызовы как отдельный неблокирующий поток для метода в другом сценарии (other_script.py
), чтобы выполнить некоторую работу над каждым из этих каталогов, указав их имена?Путь для простоты фиксирован, поскольку текущий рабочий каталог и имя каталога основаны на простой генерации меток времени.
Ниже приведен мой код для этого примера:
# main script
import os
import cv2
import time
from other_script import *
if __name__ == "__main__":
while True:
if some_event_triggered:
directory = "." + time.strftime("\\%Y-%m-%dT%H%M%S%z")
if not os.path.isdir(directory):
os.mkdir(directory)
# assuming images are given
for num, img in enumerate(images):
name_of_file = directory + "\\img_num" + str(num) + ".jpg"
cv2.imwrite(name_of_file, img)
# call do_work for this directory
# but continue 'listening' for new event triggers
do_work(timestamp)
# other_script.py
import os
def do_work(timestamp):
directory = os.path.join(os.getcwd(), + timestamp)
# do some work on that directory
Я рассмотрел вопрос об использовании queue.Queue
для хранения всех временных меток и вызова функции do_work
в качестве потока фонового процесса для каждой временной метки.Но чтение таких примеров https://stackoverflow.com/a/16207592 было слишком сложным для меня, чтобы я мог адаптировать и реализовывать очереди и потоки в этом простом примере.
Извинения, если это слишком простой вопрос, но ямне нужно прочитать код, реализующий мой пример, чтобы облегчить мое понимание предмета.