Example #1
0
 def usedByThread(userIndex,count):
     '''
     被线程调用的函数,与infoList共同解决了数据同步的问题
     :param userIndex: 代表第几个用户
     :param count: 代表这个用户访问了多少次
     :return:
     '''
     infoList[userIndex]=self.oneUserVisit(count)
     logger.info(u'第%d个用户访问的结果是%s'%((userIndex+1),infoList[userIndex]))
Example #2
0
 def usedByThread(userIndex, count):
     '''
     被线程调用的函数,与infoList共同解决了数据同步的问题
     :param userIndex: 代表第几个用户
     :param count: 代表这个用户访问了多少次
     :return:
     '''
     infoList[userIndex] = self.oneUserVisit(count)
     logger.info(u'第%d个用户访问的结果是%s' %
                 ((userIndex + 1), infoList[userIndex]))
Example #3
0
    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
Example #4
0
    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