@@ -46,22 +46,47 @@ def job_video2image(
4646 v2i_proc .wait ()
4747
4848
49- async def job_image2image (
49+ def job_image2image (
5050 i2i_pool : IFrameProcessorPool ,
5151 dequeue : Queue ,
5252 enqueue : Queue ,
5353 progress : ThreadSafeProgress ,
5454):
55- while True :
56- frame_data : FrameData = await asyncio .to_thread (dequeue .get )
57- if frame_data is None :
58- dequeue .put (None )
59- break
60- result = await i2i_pool (frame_data = frame_data )
61- # print(f"--------i2i[{frame_data.frame_id:05d}]")
62- enqueue .put (result )
63- progress .change (1 )
64- enqueue .put (None ) # end of work
55+ loop = asyncio .new_event_loop ()
56+ number_of_process = len (i2i_pool )
57+
58+ async def _processing (
59+ i2i_pool : IFrameProcessorPool ,
60+ dequeue : Queue ,
61+ enqueue : Queue ,
62+ progress : ThreadSafeProgress ,
63+ ):
64+ while True :
65+ frame_data : FrameData = dequeue .get ()
66+ if frame_data is None :
67+ dequeue .put (None )
68+ break
69+ result = await i2i_pool (frame_data = frame_data )
70+ # print(f"--------i2i[{frame_data.frame_id:05d}]")
71+ enqueue .put (result )
72+ progress .change (1 )
73+ enqueue .put (None ) # end of work
74+
75+ loop .run_until_complete (
76+ asyncio .gather (
77+ * [
78+ loop .create_task (
79+ _processing (
80+ i2i_pool = i2i_pool ,
81+ dequeue = dequeue ,
82+ enqueue = enqueue ,
83+ progress = progress ,
84+ )
85+ )
86+ for _ in range (number_of_process )
87+ ]
88+ )
89+ )
6590
6691
6792def job_image2video (
@@ -150,17 +175,13 @@ async def _async_run(self):
150175 enqueue = v2i_queue ,
151176 progress = v2i_progress ,
152177 ),
153- * [
154- asyncio .create_task (
155- job_image2image (
156- i2i_pool = image2image_pool ,
157- dequeue = v2i_queue ,
158- enqueue = i2v_queue ,
159- progress = i2i_progress ,
160- )
161- )
162- for _ in range (len (image2image_pool ))
163- ],
178+ asyncio .to_thread (
179+ job_image2image ,
180+ i2i_pool = image2image_pool ,
181+ dequeue = v2i_queue ,
182+ enqueue = i2v_queue ,
183+ progress = i2i_progress ,
184+ ),
164185 asyncio .to_thread (
165186 job_image2video ,
166187 i2v_proc = image2video_proc ,
0 commit comments