我的代码利用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)
是否有更好的方法来实现?由于执行程序位于无限循环中,这是否可能导致内存泄漏?
答案 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
语句完成时将对线程进行垃圾收集。