import asyncio, itertools
import time
def do_shit():
for i in itertools.count():
print('In background: {}'.format(i))
time.sleep(1)
@asyncio.coroutine
def add(x, y):
print('Adding... {} + {}'.format(x, y))
yield from asyncio.sleep(3)
return x + y
@asyncio.coroutine
def main_task(x, y):
result = yield from add(x, y)
print('The result was: {}'.format(result))
def background_task(target, *, loop=None, executor=None):
if loop is None:
loop = asyncio.get_event_loop()
if callable(target):
return loop.run_in_executor(executor, target)
raise TypeError("target must be a callable, not {!r}".format(type(target)))
ticker = background_task(do_shit)
loop = asyncio.get_event_loop()
loop.run_until_complete(main_task(20, 31))
loop.close()
aW1wb3J0IGFzeW5jaW8sIGl0ZXJ0b29scwppbXBvcnQgdGltZQoKZGVmIGRvX3NoaXQoKToKICAgIGZvciBpIGluIGl0ZXJ0b29scy5jb3VudCgpOgogICAgICAgIHByaW50KCdJbiBiYWNrZ3JvdW5kOiB7fScuZm9ybWF0KGkpKQogICAgICAgIHRpbWUuc2xlZXAoMSkKCkBhc3luY2lvLmNvcm91dGluZQpkZWYgYWRkKHgsIHkpOgogICAgcHJpbnQoJ0FkZGluZy4uLiB7fSArIHt9Jy5mb3JtYXQoeCwgeSkpCiAgICB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoMykKICAgIHJldHVybiB4ICsgeQoKQGFzeW5jaW8uY29yb3V0aW5lCmRlZiBtYWluX3Rhc2soeCwgeSk6CiAgICByZXN1bHQgPSB5aWVsZCBmcm9tIGFkZCh4LCB5KQogICAgcHJpbnQoJ1RoZSByZXN1bHQgd2FzOiB7fScuZm9ybWF0KHJlc3VsdCkpCgoKZGVmIGJhY2tncm91bmRfdGFzayh0YXJnZXQsICosIGxvb3A9Tm9uZSwgZXhlY3V0b3I9Tm9uZSk6CiAgICBpZiBsb29wIGlzIE5vbmU6CiAgICAgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQoKICAgIGlmIGNhbGxhYmxlKHRhcmdldCk6CiAgICAgICAgcmV0dXJuIGxvb3AucnVuX2luX2V4ZWN1dG9yKGV4ZWN1dG9yLCB0YXJnZXQpCgogICAgcmFpc2UgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhIGNhbGxhYmxlLCBub3QgeyFyfSIuZm9ybWF0KHR5cGUodGFyZ2V0KSkpCgp0aWNrZXIgPSBiYWNrZ3JvdW5kX3Rhc2soZG9fc2hpdCkKbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQpsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShtYWluX3Rhc2soMjAsIDMxKSkKbG9vcC5jbG9zZSgpCg==