Python:如何计算多线程下载速度

Pag*_*vid 5 python multithreading python-requests

我写了一个多线程http下载器,现在它可以比单线程下载器更快地下载文件,并且MD5总和是正确的.但是,我发现它显示的速度是如此之快,以至于我不相信它是真正的价值.在此输入图像描述 单元尚未打印,但我确定它是KB/s,请查看我的代码有关该措施.

 # Setup the slaver
    def _download(self):
        # Start download partital content when queue not empty
        while not self.configer.down_queue.empty():
            data_range = self.configer.down_queue.get()
            headers = {
                'Range': 'bytes={}-{}'.format(*data_range)
            }
            response = requests.get(
                self.configer.url, stream = True,
                headers = headers
            )
            start_point = data_range[0]
            for bunch in response.iter_content(self.block_size):
                _time = time.time()
                with self.file_lock:
                    with open(
                        self.configer.path, 'r+b',
                        buffering = 1
                    ) as f:
                        f.seek(start_point)
                        f.write(bunch)
                        f.flush()
                start_point += self.block_size
                self.worker_com.put((
                    threading.current_thread().name,
                    int(self.block_size / (time.time() - _time))
                ))
            self.configer.down_queue.task_done()

    # speed monitor
    def speed_monitor(self):
        while len(self.thread_list)>0:
            try:
                info = self.worker_com.get_nowait()
                self.speed[info[0]] = info[1]
            except queue.Empty:
                time.sleep(0.1)
                continue
            sys.stdout.write('\b'*64 + '{:10}'.format(self.total_speed)
                + '  thread num ' + '{:2}'.format(self.worker_count))
            sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请访问我的github存储库.如果你能指出我的错误,我将不胜感激.谢谢.