Форум сайта python.su
Почему код в этом случае отрабатывает
def test(value): print("Thread start with value = " + str(value)) chest = ['one', 'two', 'three', 'four', 'five'] for i in chest: threads.append(threading.Thread(target=test, args=(i,))) for i in threads: i.start() for i in threads: i.join()
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: for k in i: threads.append(threading.Thread(target=test, args=(k,))) for i in threads: i.start() for i in threads: i.join()
Офлайн
for i in threads: i.start() for i in threads: i.join()
[code python][/code]
Офлайн
у вас один и тот же поток во втором случае стартует несколько раз,
это как
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
Отредактировано xam1816 (Янв. 21, 2021 21:32:08)
Офлайн
PEHDOMили массив обнулить
отступы убрать.
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: for k in i: threads.append(threading.Thread(target=test, args=(k,))) for i in threads: i.start() for i in threads: i.join() threads = []
Офлайн
izooomrudтак у вас тогда никакой многопоточности. Учитывая что в for k in i: всего один элемент, вы просто запускаете поток, ждете пока он отработает, запускаете следующий и т.д.
или массив обнулить
[code python][/code]
Офлайн