Ejemplo n.º 1
0
class RunInThread(Thread):
    """
    """
    def __init__(self, action, *args, **kwargs):
        """Инициализация потока"""
        log.info("Init:")
        # print("Thread Init")
        Thread.__init__(self)
        self.result = None
        self.event = Event()
        self.action = action
        self._args = args
        self._kwargs = kwargs


    def run(self):
        """Запуск потока"""
        # print("Thread Act Run")
        log.info("Act Run")
        try:
            self.result = self.action(*self._args, **self._kwargs)
        except Exception as e:
            # print("Err: thread Act: {}".format(e))
            log.info("Act: ERROR {}".format(e))
            pass

        self.event.set()
        # print("Thread Act Done")
        log.info("Act: Done")
Ejemplo n.º 2
0
async def main():
    event = Event()
    asyncio.create_task(waiter(event))
    await asyncio.sleep(2)
    print('Setting event')
    event.set()
    await asyncio.sleep(1)
    # Caller can check if event has been cleared
    print('Event is {}'.format('set' if event.is_set() else 'clear'))
Ejemplo n.º 3
0
class Pending:
    def __init__(self):
        self._ev = Event()
        self._res = None

    async def get(self):
        await self._ev.wait()
        self._ev.clear()  # TODO: race condition?
        if isinstance(self._res, OSError):
            raise self._res
        else:
            return self._res

    def signal(self, result):
        self._res = result
        self._ev.set()
Ejemplo n.º 4
0
async def set_after_timeout(event: uasyncio.Event, timeout: float):
    await uasyncio.sleep(timeout)
    event.set()