Is Event.wait necessary here? When I read some code,I think the usage of Event is not necessary,is it right?

# start server
while True:
    # accept a request here
    queue.put(info)
    event.set() # notify all the threads?
    # pass queue and event here to a Thread constructor


other place there are more than 10 threads running,

# inside a Thread class
def __init__(self, queue, event):
    threading.Thread.__init__(self)
    self.queue, self.event = queue, event

def run(self):
    while True:
        self.event.wait() # &lt;- block here, I think this can be removed
        info = self.queue.get() # &lt;- block here again, only one thread can get job to do?
        # do something
        self.queue.task_done()
        self.event.clear() #
As long as queue is actually Queue.Queue (or another collection with its own blocking mechanic), the event object is not required in the code you posted. I'd even say that it's used incorrectly. There is a racing condition when the server calls event.set() and a thread is just done with its current task, calling event.clear(). This leaves all threads waiting on the event, even though there's an item in the queue. 

Edit: Bollocks, didn't think that one through. event.set() wakes up all threads that are hanging on event.wait(), causing them to continue waiting at queue.get(). One thread will fetch the item and process it. So, no racing condition. Just redundancy.