У меня есть генератор python, который выводит изображения (кадры) cv2 из видео и обрабатываю его, используя concurrent.futures.ThreadPoolExecutor
. Я вижу, что tqdm зависает, пока генератор не исчерпан. Тем не менее, если я получаю от исполнителя gen_frames_dummy
, tqdm обновляется при каждом завершении задачи.
Любая помощь будет принята с благодарностью.
def gen_frames(s):
for frame_num in frames_2_get:
# skip to frame in video
s.set(cv2.CAP_PROP_POS_FRAMES, frame_num-1)
res, frame = s.read()
if res:
yield frame
def gen_frames_dummy(s):
for frame_num in frames_2_get:
yield np.zeros((16,16,3))
def frame_op(f):
# process the frame
pass
with ThreadPoolExecutor() as executor:
frames_g = gen_frames(vid_capture)
list(tqdm(executor.map(frame_op, frames_g), total=len(frames2get))