import asyncio
import threading
 
 
def ask(q):
    async def put_to_q(q, elem):
        await q.put(elem)
 
    while True:
        res = input('Enter data: ')
        asyncio.run(put_to_q(q, res))
 
 
async def produce(q):
    while True:
        elem = await q.get()
        print(f'Processing {elem} ...')
        await asyncio.sleep(3)
        print(f'{elem} done')
 
 
async def main():
    queue = asyncio.Queue()
    print('Main started')
    t = threading.Thread(target=lambda: ask(queue))
    t.start()
    await produce(queue)
 
 
if __name__ == '__main__':
    asyncio.run(main())
				aW1wb3J0IGFzeW5jaW8KaW1wb3J0IHRocmVhZGluZwoKCmRlZiBhc2socSk6CiAgICBhc3luYyBkZWYgcHV0X3RvX3EocSwgZWxlbSk6CiAgICAgICAgYXdhaXQgcS5wdXQoZWxlbSkKCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHJlcyA9IGlucHV0KCdFbnRlciBkYXRhOiAnKQogICAgICAgIGFzeW5jaW8ucnVuKHB1dF90b19xKHEsIHJlcykpCgoKYXN5bmMgZGVmIHByb2R1Y2UocSk6CiAgICB3aGlsZSBUcnVlOgogICAgICAgIGVsZW0gPSBhd2FpdCBxLmdldCgpCiAgICAgICAgcHJpbnQoZidQcm9jZXNzaW5nIHtlbGVtfSAuLi4nKQogICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMykKICAgICAgICBwcmludChmJ3tlbGVtfSBkb25lJykKCgphc3luYyBkZWYgbWFpbigpOgogICAgcXVldWUgPSBhc3luY2lvLlF1ZXVlKCkKICAgIHByaW50KCdNYWluIHN0YXJ0ZWQnKQogICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogYXNrKHF1ZXVlKSkKICAgIHQuc3RhcnQoKQogICAgYXdhaXQgcHJvZHVjZShxdWV1ZSkKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgYXN5bmNpby5ydW4obWFpbigpKQ==