Skip to content

Commit b4c2d2d

Browse files
committed
add timer.py based on _thread and add example
1 parent 4f4b26c commit b4c2d2d

5 files changed

Lines changed: 83 additions & 2 deletions

File tree

examples/_thread/timer1.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import time
2+
from timer import Timer
3+
4+
5+
tim = Timer()
6+
7+
8+
def task1(a, b):
9+
print('task1:', a, b)
10+
11+
12+
def task2(a, b):
13+
print('task2:', a, b)
14+
15+
16+
tim.call_after_ms(1000, task1, (1, 2))
17+
tim.call_after_ms(2000, task2, (3, 4))
18+
19+
while len(tim.tasks) > 0:
20+
time.sleep(1)
21+
22+
tim.stop()

port/linux/package/pikascript/module_list.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,5 @@ fuzzypid
4545
pika_lvgl
4646
import_err
4747
_from_import_pyi
48-
threading
48+
threading
49+
timer
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import _thread
2+
import time
3+
4+
class Timer:
5+
def __init__(self, tick_ms=10):
6+
self.tick_ms = tick_ms
7+
self.is_running = False
8+
self.stoped = False
9+
self.tasks = []
10+
self.debug = False
11+
self.start()
12+
13+
def start(self):
14+
self.is_running = True
15+
_thread.start_new_thread(self.run, ())
16+
17+
def run(self):
18+
while self.is_running:
19+
time.sleep_ms(self.tick_ms)
20+
for task in self.tasks:
21+
time_end, func, args = task
22+
if time.tick_ms() >= time_end:
23+
func(*args)
24+
self.tasks.remove(task)
25+
if self.debug:
26+
print('tasks after run:', len(self.tasks))
27+
self.stoped = True
28+
29+
def stop(self):
30+
self.is_running = False
31+
while not self.stoped:
32+
time.sleep_ms(self.tick_ms)
33+
34+
def call_after_ms(self, ms, func, args=()):
35+
time_end = time.tick_ms() + ms
36+
self.tasks.append((time_end, func, args))
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import time
2+
from timer import Timer
3+
4+
5+
tim = Timer()
6+
7+
8+
def task1(a, b):
9+
print('task1:', a, b)
10+
11+
12+
def task2(a, b):
13+
print('task2:', a, b)
14+
15+
16+
tim.call_after_ms(1000, task1, (1, 2))
17+
tim.call_after_ms(2000, task2, (3, 4))
18+
19+
while len(tim.tasks) > 0:
20+
time.sleep(1)
21+
22+
tim.stop()

src/PikaVersion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
#define PIKA_VERSION_MINOR 13
33
#define PIKA_VERSION_MICRO 4
44

5-
#define PIKA_EDIT_TIME "2024/10/13 23:56:45"
5+
#define PIKA_EDIT_TIME "2024/12/02 20:54:06"

0 commit comments

Comments
 (0)