у вас один и тот же поток во втором случае стартует несколько раз,
это как
def test(value):
print("Thread start with value = " + str(value))
chest = ['one', 'two', 'three', 'four', 'five']
th = threading.Thread(target=test, args=(chest[0],))
th.start()# стартанули
th.start()# когда сказали стартануть этот же поток еще раз,вылезла ошибка(стартовать 1 раз,больше не нужно)
вот так в коде выглядит
import threading
threads = []
def test(value):
print("Thread start with value = " + str(value))
box = [{'one': 1}, {'two': 2}, {'three': 3}, {'four': 4}, {'five': 5}]
for i in box:
print('>>>>>>>>>>>>>>>>>>>>>>')
for k in i:
threads.append(threading.Thread(target=test, args=(k,)))
for i in threads:
print(f'{i}.start()')
>>>>>>>>>>>>>>>>>>>>>>
<Thread(Thread-1, initial)>.start()
>>>>>>>>>>>>>>>>>>>>>>
<Thread(Thread-1, initial)>.start()
<Thread(Thread-2, initial)>.start()
>>>>>>>>>>>>>>>>>>>>>>
<Thread(Thread-1, initial)>.start()
<Thread(Thread-2, initial)>.start()
<Thread(Thread-3, initial)>.start()
>>>>>>>>>>>>>>>>>>>>>>
<Thread(Thread-1, initial)>.start()
<Thread(Thread-2, initial)>.start()
<Thread(Thread-3, initial)>.start()
<Thread(Thread-4, initial)>.start()
>>>>>>>>>>>>>>>>>>>>>>
<Thread(Thread-1, initial)>.start()
<Thread(Thread-2, initial)>.start()
<Thread(Thread-3, initial)>.start()
<Thread(Thread-4, initial)>.start()
<Thread(Thread-5, initial)>.start()
Process finished with exit code 0
решение выше написали,сначала собрать все потоки,а потом друг за другом один раз запустить