> On Dec 27, 2019, at 19:48, Tim Peters <tim.pet...@gmail.com> wrote:
> 
> So, ya, I've seen and implemented lots of work queues along these
> lines - but an OrderedSet would be an "attractive nuisance"
> (offhandedly appearing to solve a problem it doesn't actually
> address):
> 
>  jobs = some_kind_of_queue()
>  finished_jobs = set()
>  ...
>  while jobs:
>      job = jobs.get()
>      if job in finished_jobs:
>          continue
>      try:
>          work on the job
>          possibly adding (sub)jobs to the `jobs` queue
>      except TransientExceptions:
>          jobs.put(job)  # try again later
>      else:
>          finished_jobs.add(job)

Well, if an OrderedSet were designed to gracefully handle resizes during 
iteration, something like this may make sense:

jobs = OrderedSet(initial_jobs)
for job in jobs:
  new_jobs = process(job)
  jobs |= new_jobs
... # jobs is now a set of every job processed

A dictionary with None values comes close if you replace the union line with a 
jobs.update(new_jobs) call (and ignore resizing issues), but it breaks because 
repeated jobs are shuffled to the end of the sequence and would be processed 
again.

Brandt
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/SXGD5G5EY4YMXDG42AU7OSNVCUUU25DI/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to