Вы не можете сделать это с потоками (нет способа заставить поток выйти снаружи). Вы можете terminate()
пул процессов.
Примерно так, но вам нужно использовать map_async. Если вы используете карту блокировки, то вам, вероятно, не повезло.
from multiprocessing import Pool
from time import sleep
def worker(x):
print(x)
sleep(50)
tasks = [x for x in range(0,10)]
p = Pool()
q = p.map_async(worker, tasks)
q.wait(10)
try:
p.terminate()
p.join()
except:
pass
print("done")
Это отправляет задачи в пул и через 10 секунд завершает пул, если он еще не завершен. Это может или не может быть подходящим для ваших целей.