用ThreadPoolExecutor实现无限循环的最佳方法是什么?

时间:2020-10-09 02:06:19

标签: python python-3.x loops threadpoolexecutor

我的代码利用ThreadPoolExecutor处理多个任务。主要要求之一是它可以无限期执行。这是我当前的实现:

def process_something():
  with ThreadPoolExecutor(max_workers=MAX_WORKERS1) as executor1:
    with ThreadPoolExecutor(max_workers=MAX_WORKERS2) as executor2:
       while True:
          func1_returns = executor1.map(func1, arg1)
          func2_returns = executor2.map(func2, arg2)
    
          # code for processing func returns
    
          time.sleep(1)

是否有更好的方法来实现?由于执行程序位于无限循环中,这是否可能导致内存泄漏?

1 个答案:

答案 0 :(得分:0)

线程池已具有多个要使用的线程。您无需创建多个池。

def process_something():
  with ThreadPoolExecutor(max_workers=MAX_WORKERS1) as executor1:
     while True:
        func1_returns = executor1.submit(func1, arg1)
        func2_returns = executor1.submit(func2, arg2)
    
        # code for processing func returns
    
        time.sleep(1)

线程池中不应有任何内存泄漏。 with语句完成时将对线程进行垃圾收集。