import os , logging
import asyncio
logging .basicConfig ( level= logging .INFO , format= '%(asctime)s %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s' , datefmt= '%d-%b-%y %H:%M:%S' )
logger = logging .getLogger ( __name__)
items = [ { "name" : "A" } , { "name" : "B" } , { "name" : "C" } ]
processed = 0
async def increment( item) :
count = item.get ( 'count' , 0 )
count += 1
return count
async def get_and_update( item, processed) :
item[ 'count' ] = await increment( item)
# Show progress now, but how?
processed += 1
logger.info ( f"You can't see me {processed}" )
async def run( ) :
logger.info ( f"Processing {len(items)} items..." )
await asyncio.gather ( *[
asyncio.create_task (
get_and_update( item, processed)
) for item in items
] )
loop = asyncio.get_event_loop ( )
loop.run_until_complete ( run( ) )
aW1wb3J0IG9zLCBsb2dnaW5nCmltcG9ydCBhc3luY2lvCgpsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSclKGFzY3RpbWUpcyAlKGxldmVsbmFtZSktOHMgWyUoZmlsZW5hbWUpczolKGxpbmVubylkXSAlKG1lc3NhZ2UpcycsIGRhdGVmbXQ9JyVkLSViLSV5ICVIOiVNOiVTJykKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgppdGVtcyA9IFt7Im5hbWUiOiAiQSJ9LCB7Im5hbWUiOiAiQiJ9LCB7Im5hbWUiOiAiQyJ9XQoKcHJvY2Vzc2VkID0gMAoKYXN5bmMgZGVmIGluY3JlbWVudChpdGVtKToKICAgIGNvdW50ID0gaXRlbS5nZXQoJ2NvdW50JywgMCkKICAgIGNvdW50ICs9IDEKICAgIHJldHVybiBjb3VudAoKYXN5bmMgZGVmIGdldF9hbmRfdXBkYXRlKGl0ZW0sIHByb2Nlc3NlZCk6CiAgICBpdGVtWydjb3VudCddID0gYXdhaXQgaW5jcmVtZW50KGl0ZW0pCiAgICAjIFNob3cgcHJvZ3Jlc3Mgbm93LCBidXQgaG93PwogICAgcHJvY2Vzc2VkICs9IDEKICAgIGxvZ2dlci5pbmZvKGYiWW91IGNhbid0IHNlZSBtZSB7cHJvY2Vzc2VkfSIpCgphc3luYyBkZWYgcnVuKCk6CiAgICBsb2dnZXIuaW5mbyhmIlByb2Nlc3Npbmcge2xlbihpdGVtcyl9IGl0ZW1zLi4uIikKICAgIGF3YWl0IGFzeW5jaW8uZ2F0aGVyKCpbCiAgICAgICAgYXN5bmNpby5jcmVhdGVfdGFzaygKICAgICAgICAgICAgZ2V0X2FuZF91cGRhdGUoaXRlbSwgcHJvY2Vzc2VkKQogICAgICAgICkgZm9yIGl0ZW0gaW4gaXRlbXMKICAgIF0pCgpsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQ==
stdout
stderr
28-Aug-20 11:30:22 INFO [prog.py:23] Processing 3 items...
Traceback (most recent call last):
File "./prog.py", line 31, in <module>
File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
return future.result()
File "./prog.py", line 27, in run
File "./prog.py", line 19, in get_and_update
UnboundLocalError: local variable 'processed' referenced before assignment