import time
from collections import namedtuple, deque
Task = namedtuple("Task", ("func", "args", "priority"))
mainThreadQueue = deque()
lastMainThread = 0
[docs]def addToMainThreadQueue(func, args=(), priority=1):
mainThreadQueue.append(Task(func, args, priority))
[docs]def doNextTask():
global mainThreadQueue, lastMainThread
if len(mainThreadQueue) == 0:
return
if time.time() - lastMainThread > 0.1 / mainThreadQueue[0].priority:
item = mainThreadQueue.popleft()
item.func(*item.args)
lastMainThread = time.time()