dejsem.1.5/python/dejsem.pycharm/counter.py
author hh
Wed, 27 Nov 2019 09:50:16 +0100
changeset 0 676905a3b03c
permissions -rw-r--r--
--
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
hh
parents:
diff changeset
     1
# coding=utf8
hh
parents:
diff changeset
     2
hh
parents:
diff changeset
     3
import sys, time, threading
hh
parents:
diff changeset
     4
from d import D
hh
parents:
diff changeset
     5
hh
parents:
diff changeset
     6
hh
parents:
diff changeset
     7
class Counter():
hh
parents:
diff changeset
     8
hh
parents:
diff changeset
     9
	def __init__(self, d, size):
hh
parents:
diff changeset
    10
		self.d = D("{}, counter".format(d.debid))
hh
parents:
diff changeset
    11
		self.counterN = None
hh
parents:
diff changeset
    12
		if (size > 100 * 1000):
hh
parents:
diff changeset
    13
			self.counterN = [size, 0, time.time()]
hh
parents:
diff changeset
    14
			self.counterT = threading.Thread(target=self.counter, args=(self.counterN,), name="counter")
hh
parents:
diff changeset
    15
			self.counterT.start()
hh
parents:
diff changeset
    16
hh
parents:
diff changeset
    17
	def update(self, amount):
hh
parents:
diff changeset
    18
		if self.counterN:
hh
parents:
diff changeset
    19
			self.counterN[1] += amount
hh
parents:
diff changeset
    20
hh
parents:
diff changeset
    21
	def stop(self):
hh
parents:
diff changeset
    22
		if self.counterN:
hh
parents:
diff changeset
    23
			self.counterN[1] = -1
hh
parents:
diff changeset
    24
			self.counterT.join()
hh
parents:
diff changeset
    25
hh
parents:
diff changeset
    26
	def counter(self, n):
hh
parents:
diff changeset
    27
		self.d.log("counter started", sev=4)
hh
parents:
diff changeset
    28
		while n[1] > -1:
hh
parents:
diff changeset
    29
			elapsed = time.time() - n[2]
hh
parents:
diff changeset
    30
			kbps = 0
hh
parents:
diff changeset
    31
			if elapsed > 0: kbps = int(n[1] / (1024 * elapsed))
hh
parents:
diff changeset
    32
			sys.stdout.write("\r{}%, {:4d} KB/s   ".format(int(100 * n[1] / n[0]), kbps))
hh
parents:
diff changeset
    33
			time.sleep(0.5)
hh
parents:
diff changeset
    34
		print("", file=sys.stdout)