def usedByThread(userIndex,count): ''' 被线程调用的函数,与infoList共同解决了数据同步的问题 :param userIndex: 代表第几个用户 :param count: 代表这个用户访问了多少次 :return: ''' infoList[userIndex]=self.oneUserVisit(count) logger.info(u'第%d个用户访问的结果是%s'%((userIndex+1),infoList[userIndex]))
def usedByThread(userIndex, count): ''' 被线程调用的函数,与infoList共同解决了数据同步的问题 :param userIndex: 代表第几个用户 :param count: 代表这个用户访问了多少次 :return: ''' infoList[userIndex] = self.oneUserVisit(count) logger.info(u'第%d个用户访问的结果是%s' % ((userIndex + 1), infoList[userIndex]))
def userVisit(self, userCount, count): ''' 模拟userCount个用户同时访问共count次 为每一个用户起一个线程 :param userCount: :param count: :return: ''' import threading infoList = [{}] * userCount threads = [] loops = range(userCount) def strategy(userCount, count): ''' 提供访问策略,返回数组 :param userCount: :param count: :return: ''' reArray = [0] * userCount import random for i in range(count): x = random.randint(0, userCount - 1) reArray[x] += 1 return reArray def usedByThread(userIndex, count): ''' 被线程调用的函数,与infoList共同解决了数据同步的问题 :param userIndex: 代表第几个用户 :param count: 代表这个用户访问了多少次 :return: ''' infoList[userIndex] = self.oneUserVisit(count) logger.info(u'第%d个用户访问的结果是%s' % ((userIndex + 1), infoList[userIndex])) stra = strategy(userCount, count) logger.info(u'%d个用户访问%d次,对应访问次数是%s' % (userCount, count, stra)) for i in loops: t = threading.Thread(target=usedByThread, args=( i, stra[i], )) threads.append(t) for i in loops: threads[i].start() for i in loops: threads[i].join() return infoList
def userVisit(self,userCount,count): ''' 模拟userCount个用户同时访问共count次 为每一个用户起一个线程 :param userCount: :param count: :return: ''' import threading infoList=[{}]*userCount threads=[] loops=range(userCount) def strategy(userCount,count): ''' 提供访问策略,返回数组 :param userCount: :param count: :return: ''' reArray=[0]*userCount import random for i in range(count): x=random.randint(0,userCount-1) reArray[x]+=1 return reArray def usedByThread(userIndex,count): ''' 被线程调用的函数,与infoList共同解决了数据同步的问题 :param userIndex: 代表第几个用户 :param count: 代表这个用户访问了多少次 :return: ''' infoList[userIndex]=self.oneUserVisit(count) logger.info(u'第%d个用户访问的结果是%s'%((userIndex+1),infoList[userIndex])) stra=strategy(userCount,count) logger.info(u'%d个用户访问%d次,对应访问次数是%s'%(userCount,count,stra)) for i in loops: t=threading.Thread(target=usedByThread,args=(i,stra[i],)) threads.append(t) for i in loops: threads[i].start() for i in loops: threads[i].join() return infoList