can't delete from a dictionary in a loop

Hans Nowak zephyrfalcon!NO_SPAM! at gmail.com
Fri May 16 17:28:44 EDT 2008


Dan Upton wrote:

> for pid in procs_dict:
>   if procs_dict[pid].poll() != None
>    # do the counter updates
>    del procs_dict[pid]
> 
> The problem:
> 
> RuntimeError: dictionary changed size during iteration

I don't know if the setup with the pids in a dictionary is the best way to 
manage a pool of processes... I'll leave it others, presumably more 
knowledgable, to comment on that. :-)  But I can tell you how to solve the 
immediate problem:

   for pid in procs_dict.keys():
       ...

Hope this helps!

--Hans



More information about the Python-list mailing list