[issue8751] Threading and KeyError: 51

2010-05-18 Thread Vignesh

New submission from Vignesh vigne...@mail.med.upenn.edu:

I have a python script which runs a particular script large number of times 
(for monte carlo purpose) and the way I have scripted it is that, I queue up 
the script the desired number of times it should be run then I spawn threads 
and each thread runs the script once and again when its done.

Once the script in a particular thread is finished, the output is written to a 
file by accessing a lock (so my guess was that only one thread accesses the 
lock at a given time). Once the lock is released by one thread, the next thread 
accesses it and adds its output to the previously written file and rewrites it. 

I am not facing a problem when the number of iterations is small like 10 or 20 
but when its large like 50 or 150, python returns a KeyError: 51 telling me 
element doesn't exist and the error it points out to is within the lock which 
puzzles me since only one thread should access the lock at once and I do not 
expect an error. 

This is the class I use:

class errorclass(threading.Thread):

 def __init__(self, queue):
 self.__queue=queue
 threading.Thread.__init__(self)
 
 def run(self):
 while 1:
   item = self.__queue.get()
   if item is None: break
   result = myfunction()
   lock = threading.RLock()
   lock.acquire()
   ADD entries from current thread to entries in file and
   REWRITE FILE   
   lock.release()

--
components: IDLE
messages: 105981
nosy: Vignesh.K
priority: normal
severity: normal
status: open
title: Threading and KeyError: 51
versions: Python 2.5

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue8751
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue8751] Threading and KeyError: 51

2010-05-18 Thread Mattias Nilsson

Mattias Nilsson mattias.o.nils...@gmail.com added the comment:

Correct me if I'm wrong, but you seem to be creating a new lock object for each 
iteration in the loop?
If other threads should be blocked, they must be using the same lock object and 
you can't create new ones for each time you want to write something to the file.

This doesn't seem to be a Python bug at all, but instead a problem in your 
implementation. It might be better to post this at stackoverflow.com or 
somewhere similar.

--
nosy: +Mattias.Nilsson

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue8751
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue8751] Threading and KeyError: 51

2010-05-18 Thread Raghuram Devarakonda

Raghuram Devarakonda draghu...@gmail.com added the comment:

As suggested, please post in c.l.py or other forums. Open a bug here only if 
you are sure that there is a bug in Python.

--
nosy: +draghuram
resolution:  - invalid
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue8751
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com