AlFire <[EMAIL PROTECTED]> wrote: > But I still can not believe that +=1 is not a thread safe operation. > > > Any clue?
The statement: x+=1 is equivalent to: x = x.__iadd__(1) i.e. a function call followed by an assignment. If the object is mutable then this *may* be safe so long as you never do any other assignment to x (the __iadd__ method will return the object being mutated so the assignment would in this restricted case be a noop). Integers are immutable, so the assignment must always rebind x to a new object. There is no way given Python's semantics that this could be thread safe. Generating hundreds of threads is, BTW, a very good way to get poor performance on any system. Don't do that. Create a few threads and put the actions for those threads into a Queue. If you want the threads to execute in parallel investigate using sub-processes. The threading module already has a function to return the number of Thread objects currently alive. -- http://mail.python.org/mailman/listinfo/python-list