[downloader/fragment] Fix problem where multiple threads can share one iterator

which causes "ValueError: generator already executing" error

Closes #2881
pull/2913/head
Lesmiscore 2 years ago
parent 15dfb3929c
commit f0734e1190
No known key found for this signature in database
GPG Key ID: 0EC2B52CF86236FF

@ -410,17 +410,16 @@ class FragmentFD(FileDownloader):
def bindoj_result(future):
return future.result()
def interrupt_trigger_iter(fg):
for f in fg:
if not interrupt_trigger[0]:
break
yield f
spins = []
for idx, (ctx, fragments, info_dict) in enumerate(args):
tpe = FTPE(math.ceil(max_workers / max_progress))
def interrupt_trigger_iter():
for f in fragments:
if not interrupt_trigger[0]:
break
yield f
job = tpe.submit(thread_func, idx, ctx, interrupt_trigger_iter(), info_dict, tpe)
job = tpe.submit(thread_func, idx, ctx, interrupt_trigger_iter(fragments), info_dict, tpe)
spins.append((tpe, job))
result = True

Loading…
Cancel
Save