Многопоточная итерация в цикле
Цель: После того, как первый созданный поток сделал 1 итерацию в цикле, второй созданный поток тоже сделал 1 итерацию с того момента, как закончил предыдущий. Третий начал с момента предыдущего. А затем первый с момента предыдущего.
Например: 1-ый поток сделал итерацию (i стало равным 2). 2-ой поток продолжил с i = 2 (i стало равным 3). 3-ий поток продолжил итерацию с i = 3 (i стало равным 4). Далее возращаемся к 1-ому потоку: он начинает итерацию с i = 4 (i стало равным 5). И так далее...
(Всего должно быть задействовано 3, созданных нами, потока)
import threading
import time
i = 1
def spammer(max_words=5):
global i
while i <= max_words:
with lock:
print(f'{threading.current_thread().name} : {str(i)}/{max_words}')
i += 1
time.sleep(1)
lock = threading.Lock()
thread1 = threading.Thread(target=spammer, name='thread1')
thread2 = threading.Thread(target=spammer, name='thread2')
thread3 = threading.Thread(target=spammer, name='thread3')
thread1.start()
thread2.start()
thread3.start()
thread1.join()
thread2.join()
thread3.join()
print('Complete!')