我想了解如何使用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。
我希望你能帮助我。 感谢