Python Thread/Queue issue..
I'm creating a threaded python script that has a collection of files that is put into a queue and then an unknown amount of threads (default is 3) to start downloading.  When each of the threads complete it updates the stdout with the queue status and a percentage.  All the files are being downloaded but the status information is wrong on the 3rd thread and I'm not sure why.  I've been considering creating a work_completed queue to use for the calculation but don't think I should have to/that it would matter.  Could someone point me in the right direction here?

    download_queue = queue.Queue()

    class Downloader(threading.Thread):
    	def __init__(self,work_queue):
    		super().__init__()
    		self.current_job = 0
    		self.work_queue = work_queue
    		self.queue_size = work_queue.qsize()
 
    	def run(self):
    		while self.work_queue.qsize() > 0:
                url = self.work_queue.get(True)
				system_call = "wget -nc -q {0} -O {1}".format(url,local_file)
				os.system(system_call)
				self.current_job = int(self.queue_size) - int(self.work_queue.qsize())
				self.percent = (self.current_job / self.queue_size) * 100
				sys.stdout.flush()
				status = "\rDownloading " + url.split('/')[-1] + " [status: " + str(self.current_job) + "/" + str(self.queue_size) + ", " + str(round(self.percent,2)) + "%]"
			finally:
				self.work_queue.task_done()
    def main:
		if download_queue.qsize() > 0:
			if options.active_downloads:
				active_downloads = options.active_downloads
			else:
				active_downloads = 3
			for x in range(active_downloads):
				downloader = Downloader(download_queue)
				downloader.start()
			download_queue.join()

Python Thread/Queue issue..
===

I'm creating a threaded python script that has a collection of files that is put into a queue and then an unknown amount of threads (default is 3) to start downloading.  When each of the threads complete it updates the stdout with the queue status and a percentage.  All the files are being downloaded but the status information is wrong on the 3rd thread and I'm not sure why.  I've been considering creating a work_completed queue to use for the calculation but don't think I should have to/that it would matter.  Could someone point me in the right direction here?

    download_queue = queue.Queue()

    class Downloader(threading.Thread):
    	def __init__(self,work_queue):
    		super().__init__()
    		self.current_job = 0
    		self.work_queue = work_queue
    		self.queue_size = work_queue.qsize()
 
    	def run(self):
    		while self.work_queue.qsize() > 0:
                url = self.work_queue.get(True)
				system_call = "wget -nc -q {0} -O {1}".format(url,local_file)
				os.system(system_call)
				self.current_job = int(self.queue_size) - int(self.work_queue.qsize())
				self.percent = (self.current_job / self.queue_size) * 100
				sys.stdout.flush()
				status = "\rDownloading " + url.split('/')[-1] + " [status: " + str(self.current_job) + "/" + str(self.queue_size) + ", " + str(round(self.percent,2)) + "%]"
			finally:
				self.work_queue.task_done()
    def main:
		if download_queue.qsize() > 0:
			if options.active_downloads:
				active_downloads = options.active_downloads
			else:
				active_downloads = 3
			for x in range(active_downloads):
				downloader = Downloader(download_queue)
				downloader.start()
			download_queue.join()
