Hi, I'm trying to work with threads and I need your help. This is code: from threading import Thread from Queue import Queue import time import random
def test_fun (k,q,t): time.sleep(t) print "hello world from thread " + str(q.get()) + " (sleep time = " + str(t) + " sec.)" q.task_done() queue = Queue() for i in range (1,10): queue.put(i) for j in range(queue.qsize()): num = random.randint(1,30) worker = Thread(target=test_fun, args=(j,queue,num)) worker.setDaemon(True) worker.start() queue.join() Execution: hello world from thread 1 (sleep time = 5 sec.) hello world from thread 2 (sleep time = 5 sec.) hello world from thread 3 (sleep time = 6 sec.) hello world from thread 4 (sleep time = 8 sec.) hello world from thread 5 (sleep time = 10 sec.) hello world from thread 6 (sleep time = 13 sec.) hello world from thread 7 (sleep time = 18 sec.) hello world from thread 8 (sleep time = 19 sec.) hello world from thread 9 (sleep time = 20 sec.) Some questions for you: 1) Why order is always the same (thread 1, thread 2, thread 3 .... thread 9) and also seconds are always increasing? I don't understand. 2) I'd like to decide a max time for each thread. If max time = 7 sec. I want to print only threads with sleep time <= 7 sec. How can I do? Can you modify my code? Thank you very much -- http://mail.python.org/mailman/listinfo/python-list