我试图运行一个等待时间不同的操作,以便在线程中并行执行。在操作中,我正在设置一个值并等待操作完成,然后调用另一个函数。但是等待之后启动的线程将覆盖所有其他线程的值。
我尝试使用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()
我希望我发送给线程的值在等待时间后保持不变。但是线程会干扰并提供随机输出
答案 0 :(得分:1)
使temp
为类temp
的实例变量。将其作为__init__
放在self.temp = {}
中。