Я пытался запустить операцию, которая меняла время ожидания для параллельного выполнения в потоках. В операции я устанавливаю значение и ожидаю завершения операции, и вызываю другую функцию. Но поток, который начался после ожидания, перезаписывает значение для всех других потоков.
Я пытался использовать метод thread.local, но не работал
import threading
class temp:
def __init__(self):
self.temp = {}
def set_data(self,data):
self.temp['data'] = data
def get_data(self):
return self.temp['data']
def process(t):
# print(t)
# mydata = threading.local()
print('before sleep',threading.current_thread(),t.get_data())
# sleep(random.randint(0,1)*10)
print('after sleep',threading.current_thread(),t.get_data())
if __name__=='__main__':
threads = []
test = []
for i in range(0,4):
t = temp()
t.set_data(i)
threads.append(threading.Thread(target=process, args=(t,)))
threads[-1].start()
for t in threads:
t.join()
Я ожидаю, что значение, которое я отправил в поток, останется неизменным после времени ожидания Но потоки мешают и дают случайный вывод