-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_multitimer.py
More file actions
119 lines (82 loc) · 2.33 KB
/
test_multitimer.py
File metadata and controls
119 lines (82 loc) · 2.33 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import multitimer
from time import perf_counter, sleep
from pprint import pprint
#%%
def test_func():
raw_times.append(perf_counter() - rpt.starttime)
raw_times = []
interval = 0.1
rpt = multitimer.RepeatingTimer(interval=interval, ontimeout=test_func, count=10)
rpt.start()
sleep(1.5)
a0 = raw_times[0]
intervals = [t - a0 for t in raw_times]
offsets = [t % interval for t in intervals]
print('Intervals:')
pprint(intervals)
print('\nOffsets from ideal intervals:')
pprint(offsets)
#%%
result = []
def increment_func():
sleep(2)
result.append(42)
rpt = multitimer.MultiTimer(interval=1, function=increment_func, runonstart=True)
rpt.join() # Does nothing
rpt.start()
try:
rpt.join()
except AssertionError:
pass
else:
raise RuntimeError("should have failed")
rpt.stop()
assert len(result) == 0
rpt.join()
assert len(result) == 1
#%%
def output_func(output):
print('{:.3f}: {}'.format(perf_counter()-rpt.starttime, output))
output_dict = {'output': 'original'}
rpt = multitimer.RepeatingTimer(interval=1, function=output_func, kwargs=output_dict, count=5, runonstart=False)
rpt.start()
sleep(2.5)
output_dict['output'] = 'modified'
#%%
sleep(3)
#%%
def test_func():
raw_times.append(perf_counter() - rpt.starttime)
raw_times = []
rpt = multitimer.MultiTimer(interval=.05, function=test_func, count=10)
rpt.start()
sleep(1)
pprint(raw_times)
print('\n')
raw_times = []
rpt.start()
sleep(1)
pprint(raw_times)
#%%
def output_func(output):
print(f'{perf_counter()-rpt.starttime:.3f}: {output}')
output_dict = {'output': 'original'}
rpt = multitimer.MultiTimer(interval=1, function=output_func, kwargs=output_dict, count=5, runonstart=True)
rpt.start()
sleep(2.5)
output_dict['output'] = 'modified'
sleep(3)
output_dict['output'] = 'changed to something else for another try'
rpt.start()
sleep(2.5)
output_dict['output'] = 'modified yet again'
#%%
def output_func(output):
print(f'{perf_counter()-rpt.starttime:.3f}: {output}')
output_dict = {'output': 'original'}
rpt = multitimer.MultiTimer(interval=1, function=output_func, kwargs=output_dict, count=8, runonstart=True)
rpt.start()
sleep(2.5)
output_dict['output'] = 'modified'
sleep(1)
rpt.start() # should re-start the MultiTimer