File: progress.py

package info (click to toggle)
kaa-base 0.6.0%2Bsvn4596-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, stretch, wheezy
  • size: 2,348 kB
  • ctags: 3,068
  • sloc: python: 11,094; ansic: 1,862; makefile: 74
file content (58 lines) | stat: -rw-r--r-- 1,299 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import sys
import kaa
import time

def update(progress):
    eta = int(progress.eta)
    sys.stdout.write('\r' + progress.get_progressbar(40))
    sys.stdout.write(' ETA %02d:%02d' % (eta / 60, eta % 60))
    sys.stdout.flush()

@kaa.threaded(progress=True)
def scan1(progress):
    progress.set(max=20)
    for i in range(20):
        progress.update()
        time.sleep(0.1)

@kaa.coroutine(interval=0.1, progress=True)
def scan2(progress):
    progress.set(max=20)
    for i in range(20):
        progress.update()
        yield kaa.NotFinished

def update3(progress):
    sys.stdout.write('\r%s' % progress.values)
    sys.stdout.flush()

class MyProgress(kaa.Signal):
    def __init__(self):
        super(MyProgress, self).__init__()
        self.values = []
        
@kaa.coroutine(interval=0.1, progress=MyProgress)
def scan3(progress, num):
    for i in range(num):
        progress.values.append(i)
        progress.emit(progress)
        yield kaa.NotFinished
        
@kaa.coroutine()
def test():
    async = scan1()
    async.progress.connect(update)
    yield async
    print
    async = scan2()
    async.progress.connect(update)
    yield async
    print
    async = scan3(15)
    async.progress.connect(update3)
    yield async
    print
    sys.exit(0)
    
test()
kaa.main.run()