'How do I run a task in the background with a delay?

I have the following code:

import time


def wait10seconds():
    for i in range(10):
        time.sleep(1)

    return 'Counted to 10!'


print(wait10seconds())

print('test')

Now my question is how do you make print('test') run before the function wait10seconds() is executed without exchanging the 2 lines.

I want the output to be the following:

test
Counted to 10!

Anyone know how to fix this?



Solution 1:[1]

You can use a Timer. Taken from the Python docs page:

def hello():
    print("hello, world")

t = Timer(30.0, hello)
t.start()  # after 30 seconds, "hello, world" will be printed

Solution 2:[2]

if you are using python 3.5+ you can use asyncio:

import asyncio
async def wait10seconds():
    for i in range(10):
        await asyncio.sleep(1)
    return 'Counted to 10!'

print(asyncio.run(wait10seconds()))

asyncio.run is new to python 3.7, for python 3.5 and 3.6 you won't be able to use asyncio.run but you can achieve the same thing by working with the event_loop directly

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 NullFucksException
Solution 2 polo