最近刚学到Python的多线程,不由自主用多线程类做了一些实验。对其中资源共享的问题有疑问,原来线程之间的共享变量会相互干扰。于是我就想,能不能用这种特性做一个随机数生成器。。。
以下是代码
random_list=[]
def task(name):
global resources,random_list
lock=threading.Lock()
# lock.acquire()
for i in range(1000000):#实验表明当1000000时线程才会相互干扰,当为100000时线程不会
resources+=1 #或者较少出现这种干扰问题
# lock.release() #猜测可能是当为1e5次运行的时间是切换运行的时间
random_list.append(resources)
for ii in range(100):
resources=0
thread1=threading.Thread(target=task,args=('第一',))
thread2=threading.Thread(target=task,args=('第二',))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print(random_list[0::2])
odd=random_list[0::2]
a=0
for j in odd:
if j>1750000:
a+=1
print(a)#a主要在50左右,有可能不稳定
print(sum(odd)/len(odd))
哈哈哈,各位大佬能解释一下吗,本人才疏学浅,也不太懂python