인터페이스 압력 측정 Python 스크립트

. 1 개  임포트 요청
  오기# 큐 모듈을 포함하여, 동기화 스레드 안전 큐 클래스를 제공한다         
(3).                       # 큐 (선입)이 FIFO 큐 큐 LIFO는 (선입에서 마지막) 
4.                       # LifoQueue 및 우선 순위 큐 PriorityQueue 인 . 이 큐는 
5                       # 잠금 기본 구현은 다중 스레드 통신에서 직접 사용할 수 있습니다. 
. 6  오기 스레딩
 . 7  오기 시간
 . 8  
. 9 status_code_list = []
 10 exec_time = 0
 (11 개).  클래스 MyThreadPool :
 12 인      DEF  __init__ (자기, MAXSIZE) : #가 있다 디폴트 매개 변수는 큐를 정의하는 
13          #MAXSIZE 큐 길이가 지정되지 않은 경우, 즉 manxsize = 0이면, 큐 길이 
14        # 무한 길이의 정의 된 0보다 큰 값은 다음 큐 길이 MAXSIZE 경우. 
15          self.maxsize = MAXSIZE
 16          self._pool = (MAXSIZE) Queue.Queue 
 17                    # MAXSIZE 풀의 크기 큐의 크기를 설정 
(18)          에 대한 _ 에서 레인지 (MAXSIZE) :     # 밑줄을 사용하는 이유를, 사실이 있기 때문에 
19                      # 년 쓸모없는이 변수로, 그것에 기호 때문에. 
20              self._pool.put (threading.Thread)     # 풀에 스레드의 수를 넣어 
21  
22      DEF의 get_thread (자기) :
 23          리턴 self._pool.get을 ()
 24  
25      DEFadd_thread (자기)
 26          self._pool.put (threading.Thread)
 27  
28  데프 REQUEST_TIME (FUNC)
 29      DEF 내측 (인수 *, ** kwargs로) :
 30          글로벌 exec_time
 31          START_TIME = 로 time.time ()
 32          FUNC ( 인수 *, ** kwargs로)
 33          END_TIME = 로 time.time ()
 34          exec_time = end_time- START_TIME
 35  
36      복귀 내부
 37  
38  
39  데프 GET_URL (URL) :
 40      글로벌 X, status_code_list
41      헤더 = { ' 사용자 에이전트 ' : ' 모질라 / 5.0 (윈도우 NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, 도마뱀 붙이 등) 크롬 / 65.0.3325.146 사파리 / 537.36 ' ,
 42                 }
 43      응답 = requests.get (URL 헤더 = 헤더)
 44      코드 = response.status_code
 45      status_code_list.append (번호)
 (46)      출력 (코드 번호)
 47      리턴 코드
 48  
49  
50  DEF get_count (_url = ' http://news.baidu.com/sports ' , = _count 100) :     #: PARAM 횟수 :每个线程请求的数量
51      글로벌 status_code_list, URL는 카운트
 (52)를      위한 I 범위 (계산) :
 53          GET_URL (URL)
 54  
55  데프 request_status () :
 56      COUNT_NUM = LEN (status_code_list)
 57      set_code_list = 설정 ( status_code_list)
 58      status_dict = {}
 (59)      에 대한 I 에서 set_code_list :
 60          status_dict [I] = STR (status_code_list) .count (STR (I))
 61      echo_str (COUNT_NUM, set_code_list, status_dict)
 62  
63 DEF echo_str (COUNT_NUM, set_code_list, status_dict) :
 64      인쇄 ( ' ==================================== === ' )
 65      인쇄 ( " 요청 총수 % S ' % COUNT_NUM)
 (66)      이 전단 ( ' 길이 요청 %의 초 ' %의 INT (exec_time))
 67      second_request = COUNT_NUM / INT (exec_time)
 68      인쇄 ( " 당 약 초 요청 %의 시간 ' %의 INT (second_request))
 69      인쇄 ( ' 상태 코드 | 시간 ' )
 (70) 
71는      위해 K, V () status_dict.items :
 72          인쇄 (+ STR (K) '     | ' + STR (V))
 (73)는      인쇄 ( ' ================= ====================== ' )
 74  
75  
76  @request_time
 77  DEF RUN (URL, thread_num = 10 thread_pool = 10 )
 78      ' ' 
79      : PARAM의 thread_num : 실행 스레드 총 수 (요청 각 스레드 루프 요청 * = 총 수가 실행 스레드 총 수)
 80      : thread_pool PARAM : 스레드 풀의 수
 81      PARAM URL : 도메인 주소 요청
 (82)      '' '는 
83      글로벌X, status_code_list
 84      풀 = MyThreadPool (thread_pool)
 (85)      에 대한 I 범위 (thread_num) :
 86          t = pool.get_thread ()
 87          OBJ = t (목표 = get_count)
 88          obj.start ()
 89          obj.join ()
 90  
91  
92  의 경우  __name__ == ' __main__ ' :
 93      카운트 = 10   # 单个线程的请求数
94      URL = " http://baidu.com ' 
(95)      , 실행 (URL, 100, 100 )
96      request_status ()

 

추천

출처www.cnblogs.com/arvin-feng/p/11108682.html