小编Muk*_*888的帖子

Python并发ThreadPoolExecutor - 如果满足条件则停止执行

我坚持尝试使用 ThreadPoolExecutor 进行多线程,如果其中一个进程满足标准,则执行将安全停止,以便不必完成剩余的线程。

我有以下概念,但它不起作用,它一直在运行:

import time, sys
from concurrent.futures import ThreadPoolExecutor

data = {"future1": 'blank', "future2": 'blank', "future3": 'blank'}

def function1(n):
   global data #not sure if this is necessary, as it seems to be able to access this anyway?
   print(n)
   time.sleep(1)
   data['future1'] = n

def function2(n):
   global data
   print(n)
   time.sleep(2)
   data['future2'] = n

def function3(n):
   global data
   print(n)
   time.sleep(3)
   data['future3'] = n

with ThreadPoolExecutor(max_workers=4) as executor:
  while True:
    future1=executor.submit(function1, 'test1')
    future2=executor.submit(function2, 'test2')
    future3=executor.submit(function3, 'test3')

    if data['future2']!='blank':
      executor.shutdown(wait=False)
      sys.exit()
Run Code Online (Sandbox Code Playgroud)

不确定我在这里做错了什么,任何帮助将不胜感激。

python concurrency multithreading threadpoolexecutor

1
推荐指数
1
解决办法
2745
查看次数