也试着做了上一节的balance
Topic source循环100000次是让它执行的次数足够多,就有可能上一个线程在赋值的那一步, 出现下一个线程执行,传入下一个线程的参数给n,由于balance 是全局变量,线程之间通用,把另外一个线程的值传给了balance ,导致执行出来的结果和我们想的不一样,执行的次数越多,这种情况越有可能出现。
- 1
循环100000次是让它执行的次数足够多,就有可能上一个线程在赋值的那一步, 出现下一个线程执行,传入下一个线程的参数给n,由于balance 是全局变量,线程之间通用,把另外一个线程的值传给了balance ,导致执行出来的结果和我们想的不一样,执行的次数越多,这种情况越有可能出现。
今天也是蓝色的
import threading
local_balance =threading.local()
def change_balance(): bl=local_balance.balance bi=local_balance.ini bi=bi+bl bi=bi-bl print ('Current balance is %.2f (%s)'%(bi, threading.current_thread().name))
def balance_process(n): local_balance.ini=0 local_balance.balance=n change_balance()
t1 = threading.Thread(target=balance_process,args = (5,)) t2 = threading.Thread(target=balance_process,args = (8,)) t1.start() t2.start() t1.join() t2.join()
但做的时候没想明白上一节银行存款的那个for循环有什么用处,还麻烦大家指点啦,谢谢!