def compute_state(self, disk): cur_time = time() counters = None if len(disk) == 0: counters = psutil.disk_io_counters() else: counters = psutil.disk_io_counters(perdisk=True) if self.prev_counters is None: self.prev_counters = counters self.prev_time = cur_time return None data = {} if len(disk) == 0: data["read_speed"] = humanize_bytes( (counters.read_bytes - self.prev_counters.read_bytes) / (cur_time - self.prev_time)) data["write_speed"] = humanize_bytes( (counters.write_bytes - self.prev_counters.write_bytes) / (cur_time - self.prev_time)) else: if disk in counters.keys() and disk in self.prev_counters.keys(): data["read_speed"] = humanize_bytes( (counters[disk].read_bytes - self.prev_counters[disk].read_bytes) / (cur_time - self.prev_time)) data["write_speed"] = humanize_bytes( (counters[disk].write_bytes - self.prev_counters[disk].write_bytes) / (cur_time - self.prev_time)) self.prev_counters = counters self.prev_time = cur_time return data
def test_humanize_bytes(self): self.assertEqual(humanize_bytes(0), '0 B') self.assertEqual(humanize_bytes(1), '1 B') self.assertEqual(humanize_bytes(1, suffix='bit'), '1 bit') self.assertEqual(humanize_bytes(1000, si_prefix=True), '1 kB') self.assertEqual(humanize_bytes(1024, si_prefix=True), '1 kB') self.assertEqual(humanize_bytes(1000000000, si_prefix=True), '1.00 GB') self.assertEqual(humanize_bytes(1000000000, si_prefix=False), '953.7 MiB')
def test_humanize_bytes(self): self.assertEqual(humanize_bytes(0), '0 B') self.assertEqual(humanize_bytes(1), '1 B') self.assertEqual(humanize_bytes(1, suffix='bit'), '1 bit') self.assertEqual(humanize_bytes(1000, si_prefix=True), '1 kB') self.assertEqual(humanize_bytes(1024, si_prefix=True), '1 kB') self.assertEqual(humanize_bytes(1000000000, si_prefix=True), '1.00 GB') self.assertEqual(humanize_bytes(1000000000, si_prefix=False), '953.7 MiB')
def test_humanize_bytes(self): self.assertEqual(humanize_bytes(0), "0 B") self.assertEqual(humanize_bytes(1), "1 B") self.assertEqual(humanize_bytes(1, suffix="bit"), "1 bit") self.assertEqual(humanize_bytes(1000, si_prefix=True), "1 kB") self.assertEqual(humanize_bytes(1024, si_prefix=True), "1 kB") self.assertEqual(humanize_bytes(1000000000, si_prefix=True), "1.00 GB") self.assertEqual(humanize_bytes(1000000000, si_prefix=False), "953.7 MiB")
def file_size(pl, suffix='B', si_prefix=False): '''Return file size in &encoding. :param str suffix: string appended to the file size :param bool si_prefix: use SI prefix, e.g. MB instead of MiB :return: file size or None if the file isn't saved or if the size is too big to fit in a number ''' # Note: returns file size in &encoding, not in &fileencoding. But returned # size is updated immediately; and it is valid for any buffer file_size = vim_funcs['line2byte'](len(vim.current.buffer) + 1) - 1 return humanize_bytes(file_size, suffix, si_prefix)
def file_size(pl, suffix='B', si_prefix=False): '''Return file size in &encoding. :param str suffix: string appended to the file size :param bool si_prefix: use SI prefix, e.g. MB instead of MiB :return: file size or None if the file isn't saved or if the size is too big to fit in a number ''' # Note: returns file size in &encoding, not in &fileencoding. But returned # size is updated immediately; and it is valid for any buffer file_size = vim_funcs['line2byte'](len(vim.current.buffer) + 1) - 1 return humanize_bytes(file_size, suffix, si_prefix)
def render_one(self, idata, recv_format='⬇ {value:>8}', sent_format='⬆ {value:>8}', suffix='B/s', si_prefix=False, **kwargs): if not idata or 'prev' not in idata: return None t1, b1 = idata['prev'] t2, b2 = idata['last'] measure_interval = t2 - t1 if None in (b1, b2): return None r = [] for i, key in zip((0, 1), ('recv', 'sent')): format = locals()[key + '_format'] try: value = (b2[i] - b1[i]) / measure_interval except ZeroDivisionError: self.warn('Measure interval zero.') value = 0 max_key = key + '_max' is_gradient = max_key in kwargs hl_groups = ['network_load_' + key, 'network_load'] if is_gradient: hl_groups[:0] = (group + '_gradient' for group in hl_groups) r.append({ 'contents': format.format(value=humanize_bytes(value, suffix, si_prefix)), 'divider_highlight_group': 'background:divider', 'highlight_group': hl_groups, }) if is_gradient: max = kwargs[max_key] if value >= max: r[-1]['gradient_level'] = 100 else: r[-1]['gradient_level'] = value * 100.0 / max return r
def render_one( self, idata, recv_format="⬇ {value:>8}", sent_format="⬆ {value:>8}", suffix="B/s", si_prefix=False, **kwargs ): if not idata or "prev" not in idata: return None t1, b1 = idata["prev"] t2, b2 = idata["last"] measure_interval = t2 - t1 if None in (b1, b2): return None r = [] for i, key in zip((0, 1), ("recv", "sent")): format = locals()[key + "_format"] try: value = (b2[i] - b1[i]) / measure_interval except ZeroDivisionError: self.warn("Measure interval zero.") value = 0 max_key = key + "_max" is_gradient = max_key in kwargs hl_groups = ["network_load_" + key, "network_load"] if is_gradient: hl_groups[:0] = (group + "_gradient" for group in hl_groups) r.append( { "contents": format.format(value=humanize_bytes(value, suffix, si_prefix)), "divider_highlight_group": "background:divider", "highlight_group": hl_groups, } ) if is_gradient: max = kwargs[max_key] if value >= max: r[-1]["gradient_level"] = 100 else: r[-1]["gradient_level"] = value * 100.0 / max return r
def render_one(self, idata, recv_format='⬇ {value:>8}', sent_format='⬆ {value:>8}', suffix='B/s', si_prefix=False, **kwargs): if not idata or 'prev' not in idata: return None t1, b1 = idata['prev'] t2, b2 = idata['last'] measure_interval = t2 - t1 if None in (b1, b2): return None r = [] for i, key in zip((0, 1), ('recv', 'sent')): format = locals()[key + '_format'] try: value = (b2[i] - b1[i]) / measure_interval except ZeroDivisionError: self.warn('Measure interval zero.') value = 0 max_key = key + '_max' is_gradient = max_key in kwargs hl_groups = ['network_load_' + key, 'network_load'] if is_gradient: hl_groups[:0] = (group + '_gradient' for group in hl_groups) r.append({ 'contents': format.format(value=humanize_bytes(value, suffix, si_prefix)), 'divider_highlight_group': 'background:divider', 'highlight_group': hl_groups, }) if is_gradient: max = kwargs[max_key] if value >= max: r[-1]['gradient_level'] = 100 else: r[-1]['gradient_level'] = value * 100.0 / max return r