Don't use urandom for the upload data source
Using urandom limits the upload speed due to the generation speed of random characters and causes high CPU usage. See #13 Fixes #26
This commit is contained in:
		
							parent
							
								
									4b06259a92
								
							
						
					
					
						commit
						cbb249b96d
					
				
							
								
								
									
										2
									
								
								setup.py
								
								
								
								
							
							
						
						
									
										2
									
								
								setup.py
								
								
								
								
							|  | @ -4,7 +4,7 @@ import setuptools | |||
| 
 | ||||
| setuptools.setup( | ||||
|     name='speedtest-cli', | ||||
|     version='0.2', | ||||
|     version='0.2.1', | ||||
|     description=('Command line interface for testing internet bandwidth using ' | ||||
|                  'speedtest.net'), | ||||
|     author='Matt Martz', | ||||
|  |  | |||
|  | @ -25,7 +25,6 @@ import time | |||
| import os | ||||
| import sys | ||||
| import threading | ||||
| import binascii | ||||
| import re | ||||
| from xml.dom import minidom as DOM | ||||
| 
 | ||||
|  | @ -143,21 +142,17 @@ class FileGetter(threading.Thread): | |||
|         return self.result | ||||
| 
 | ||||
|     def run(self): | ||||
|         self.result = [0] | ||||
|         try: | ||||
|             if (time.time() - self.starttime) <= 10: | ||||
|                 f = urlopen(self.url) | ||||
|                 self.result = 0 | ||||
|                 while 1: | ||||
|                     contents = f.read(10240) | ||||
|                     if contents: | ||||
|                         self.result += len(contents) | ||||
|                     else: | ||||
|                     self.result.append(len(f.read(10240))) | ||||
|                     if self.result[-1] == 0: | ||||
|                         break | ||||
|                 f.close() | ||||
|             else: | ||||
|                 self.result = 0 | ||||
|         except IOError: | ||||
|             self.result = 0 | ||||
|             pass | ||||
| 
 | ||||
| 
 | ||||
| def downloadSpeed(files, quiet=False): | ||||
|  | @ -178,8 +173,8 @@ def downloadSpeed(files, quiet=False): | |||
|         while len(finished) < total_files: | ||||
|             thread = q.get(True) | ||||
|             thread.join() | ||||
|             finished.append(thread.result) | ||||
|             thread.result = 0 | ||||
|             finished.append(sum(thread.result)) | ||||
|             del thread | ||||
| 
 | ||||
|     q = Queue(6) | ||||
|     start = time.time() | ||||
|  | @ -195,7 +190,8 @@ def downloadSpeed(files, quiet=False): | |||
| class FilePutter(threading.Thread): | ||||
|     def __init__(self, url, start, size): | ||||
|         self.url = url | ||||
|         data = binascii.hexlify(os.urandom(int(size)-9)).decode() | ||||
|         chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' | ||||
|         data = chars * (int(round(int(size) / 36.0))) | ||||
|         self.data = ('content1=%s' % data[0:int(size)-9]).encode() | ||||
|         del data | ||||
|         self.result = None | ||||
|  | @ -237,7 +233,7 @@ def uploadSpeed(url, sizes, quiet=False): | |||
|             thread = q.get(True) | ||||
|             thread.join() | ||||
|             finished.append(thread.result) | ||||
|             thread.result = 0 | ||||
|             del thread | ||||
| 
 | ||||
|     q = Queue(6) | ||||
|     start = time.time() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue