On May 12, 4:51 pm, Basilisk96 <[EMAIL PROTECTED]> wrote:
> Suppose I have a function that may run for a long time - perhaps from
> several minutes to several hours. An example would be this file
> processing function:
>
> import os
> def processFiles(startDir):
>     for root, dirs, files in os.walk(startDir):
>         for fname in files:
>             if fname.lower().endswith(".zip"):
>                 # ... do interesting stuff with the file here ...
>
> Imagine that there are thousands of files to process. This could take
> a while. How can I implement this so that the caller can pause or
> interrupt this function, and resume its program flow? Doing a Ctrl+C
> interrupt would be a not-so-clean-way of performing such a thing, and
> it would quit the application altogether. I'd rather have the function
> return a status object of what it has accomplished thus far.
>
> I have heard about threads, queues, and asynchronous programming, but
> am not sure which is appropriate for this and how to apply it. Perhaps
> the above function should be a method of a class that inherits from
> the appropriate handler class? Any help will be appreciated.
>
> -Basilisk96

Consider using generators.
http://docs.python.org/tut/node11.html#SECTION00111000000000000000000

This way, whatever part of your program calls this function can
completely control the iteration. Maybe you can have it yield status
information each time.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to