我在python中学习多线程。我经常看到当程序使用多线程时,它会将线程对象附加到一个列表中,如下所示:
# imports
import threading
import time
def worker():
print "worker...."
time.sleep(30)
threads = []
for i in range(5):
thread = threading.Thread(target=worker)
threads.append(thread)
thread.start()
我认为将线程对象附加到列表是一种很好的做法,但我不知道为什么要这样做?
答案 0 :(得分:4)
这是常见做法。举个例子:
# imports
import threading
import time
def worker():
print "worker...."
time.sleep(30)
threads = []
for i in range(5):
thread = threading.Thread(target=worker)
threads.append(thread)
thread.start()
有人可能希望等待每个线程完成其工作:
for thread in threads: # iterates over the threads
thread.join() # waits until the thread has finished work
不存储某些数据结构中的线程,您必须这样做(创建,启动,加入......)手动:
thread_1 = threading.Thread(target=worker)
(...)
thread_n = threading.Thread(target=worker)
thread_1.start()
(...)
thread_n.start()
thread_1.join()
(...)
thread_n.join()
正如你所看到的那样(并且可以想象):你使用线程的次数越多,文书工作越多"如果你手动处理每个线程将被创建。这快速得到了太多的麻烦。此外,您的代码会更混乱,维护性更差。