如何处理python要执行的线程数?

时间:2016-10-06 14:49:19

标签: python-2.7 python-multithreading

我希望你帮助解决这个简单/难以回答的问题。

我正在使用python线程。这是我的代码:

import threading
#import class1, class2, class3 . . .

def main():

   list = [class1(), class2(), class3() . . .]
   for obj in list:
      t = threading.Thread(target=obj.run, )
      t.start()

if __name__ == "__main__":
      main()

我只希望在第一个中执行其中两个,当其中一个完成然后是第三个,依此类推

有办法做到这一点吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

您应该使用加入方法

def main():

   list = [class1(), class2()] #only two
   waiting_list = []
   for obj in list:
       t = threading.Thread(target=obj.run, )
       t.start()
       waiting_list.append(t)
   for t in waiting_list:
       print("Waiting for %s" % t)
       t.join()
       print("%s done!" % t)
   list = [class3(), class4()] #more stuff

   for obj in list:
       t = threading.Thread(target=obj.run, )
       t.start()
   #and so on

另请查看concurrent.futures包以获取更高级别的线程池以避免for循环