每次为我的数组中的每十个项运行十个线程

时间:2017-11-08 15:49:33

标签: python arrays multithreading for-loop

我有一个数组,例如100个项目,我想为我的数组的每10个项目运行10个线程。

我的问题是我不知道如何使用for循环为前10项,后10项等运行10个线程。

我需要的是如下:

for item in myarray:
    thread.start_new_thread(first_item)
    thread.start_new_thread(second_item)
    thread.start_new_thread(third_item)
    thread.start_new_thread(fourth_item)
    thread.start_new_thread(fifth_item)
    thread.start_new_thread(sixth_item)
    thread.start_new_thread(seventh_item)
    thread.start_new_thread(eight_item)
    thread.start_new_thread(ninth_item)
    thread.start_new_thread(tenth_item)

并且对于我的for循环的第二轮,运行后十项的线程。

如何每次增加我的for循环索引十次?

1 个答案:

答案 0 :(得分:1)

这是有问题的设计,因为:

  • 为每个项目启动一个新线程,而不是重新使用它们(线程创建很昂贵)
  • 您没有解释如何同步线程以将其数量限制为10(您是否真的想等待第一批10个线程完成再开始10个?)

常见的方法是使用线程池。您可以搜索concurrent.futures以获取Python 3.2+,或者搜索旧版本(不是太旧......)multiprocessing.pool.ThreadPool