Thread Question

Ritesh Raj Sarraf riteshsarraf at gmail.com
Fri Aug 4 03:26:27 EDT 2006


Carl Banks wrote:
> If you have multiple threads trying to access the same ZIP file at the
> same time, whether or not they use the same ZipFile object, you'll have
> trouble.  You'd have to change download_from_web to protect against
> simultaneous use.  A simple lock should suffice.  Create the lock in
> the main thread, like so:
>
> ziplock = threading.Lock()
>

Thanks. This looks to be the correct way to go. I do have access to all
the source code as it is under GPL.


> Then change the zipping part of download_from_web to acquire and
> release this lock; do zipfile operations only between them.
>
> ziplock.acquire()
> try:
>     do_all_zipfile_stuff_here()
> finally:
>     ziplock.release()
>

I hope while one thread has acquired the lock, the other threads (which
have done the downloading work and are ready to zip) would wait.

> If you can't change download_from_web, you might have no choice but to
> download sequentially.
>
> OTOH, if each thread uses a different ZIP file (and a different ZipFile
> object), you wouldn't have to use a lock.  It doesn't sound like you're
> doing that, though.
>
> It shouldn't be a problem if one thread is zipping at the same time
> another is downloading, unless there's some common data between them
> for some reason.
> 
> 

Thanks,
Ritesh




More information about the Python-list mailing list