Python实现的多线程http压力测试代码分析

Python实现的多线程http压力测试代码分析

本文实例讲述了Python实现的多线程http压力测试代码。分享给大家供大家参考,具体如下:

# Python version 3.3
__author__ = 'Toil'
import sys, getopt
import threading
def httpGet(url, file):
 import http.client
 conn = http.client.HTTPConnection(url)
 conn.request("GET", file)
 r = conn.getresponse()
 #print(r.getheaders())
 while not r.closed:
  r.read(200)
 conn.close()
def Usage():
 print('''
 Options are:
 -c concurrency Number of multiple requests to make
 -u host   The host
 -f file   File on web
 Example: httpget.py -c 100 -u www.example.com -f /
 ''')
if __name__ == '__main__':
 opts, args = getopt.getopt(sys.argv[1:], "hc:u:f:")
 global u, c, f
 for op, value in opts:
  if op == '-c':
   c = int(value)
  elif op == '-u':
   u = value
  elif op == '-f':
   f = value
  elif op == '-h':
   Usage()
   sys.exit(0)
  else:
   sys.exit(0)
 threads = []
 times = c
 print('Test for ', u, f)
 print('waiting...')
 for i in range(0, times):
  t = threading.Thread(target=httpGet(u, f))
  threads.append(t)
 for i in range(0, times):
  threads[i].start()
 for i in range(0, times):
  threads[i].join()

希望本文所述对大家Python程序设计有所帮助。