先上代码
from concurrent.futures import ThreadPoolExecutor
import time
from loguru import logger
def func1(x):
time.sleep(2)
return x
def func2():
my = []
exe = ThreadPoolExecutor()
for r in exe.map(func1,range(10)):
my.append(r)
exe.shutdown()
logger.info(my)
def func3():
exe = ThreadPoolExecutor(1)
exe.submit(func2)
# 这里我想先返回 1,然后异步执行函数 haha2,但是我如果设置了 wait 为 False 的话 haha2 就不会执行,
# 不设置的话得等到 haha2 执行完毕才能返回 1,我该怎么做
exe.shutdown(wait=False)
return 1
if __name__ == '__main__':
res = func3()
print(res)
我现在的需求是有三个函数,函数 2 中会使用 ThreadPoolExecutor 去执行函数 1(为了提升效率),函数 3 中会执行函数 2 并返回一个值,但是我想函数 3 先返回值就给一个 ThreadPoolExecutor(1)并且设置 wait 为 False,但是这样函数 2 并没有执行,请问我该如何实现我得目的。。。还是说 ThreadPoolExecutor 不适用这种场景,那么我应该怎么办呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.