Python Max并发线程活着

时间:2016-04-05 13:52:40

标签: python multithreading queue

我想了解如何使用python线程和队列。我的目标是让40个线程永远存活,这是我的代码:

for iteration iterations: # main iteration
    dance = 1

    if threads >= len(MAX_VALUE_ITERATION) :
        threads = len(MAX_VALUE_ITERATION)-1 # adjust number of threads as because in this iteration i have just x subvalues

    else:
        threads = threads_saved # recover the settings or the passed argument

    while dance <= 5: # iterate from 1 to 5

        request = 0

        for lol in MAX_LOL: # lol iterate

            for thread_n in range(threads): # MAX threads

                t = threading.Thread(target=do_something)
                t.setDaemon(True)
                t.start()

                request += 1

            main_thread = threading.currentThread()
            for t in threading.enumerate():
                if t is main_thread:
                    continue
                if request < len(MAX_LOL)-1 and settings.errors_count <= MAX_ERR_COUNT:
                    t.join()

        dance += 1

你在这里看到的代码被清理了,因为你需要调试很长时间,所以我试着简化一下。 你可以看到有很多迭代,我从dbquery开始,我在列表中获取结果(迭代) 接下来我调整允许的最大线程数 然后我再次从1迭代到5(这是一个传递给小线程的argoument) 然后在从查询迭代中获取的值内部有一个json,其中包含我需要再次迭代的另一个列表... 然后我最后用start和join打开线程......

脚本打开x线程然后,当它们(全部或几乎)完成它将打开其他线程...但我的目标是永远保持max X线程,我的意思是一旦一个线程完成另一个必须产生和所以......直到达到线程的max_number。

我希望你能帮助我。 感谢

0 个答案:

没有答案