尽管关于ThreadPoolExecutor的第一个示例使用了pow函数( https://docs.python.org/3/library/concurrent.futures.html ),但是使用pow似乎会在被调用时异常地阻塞所有线程。请参阅下面的代码。
from concurrent.futures import ThreadPoolExecutor
import time
executor = ThreadPoolExecutor(max_workers=16)
def blocking():
i = 0
while True:
time.sleep(1)
i+=1
print("block",i)
if i>3:
print("Starting pow....")
break
block= pow(363,100000000000000)
return True
def non_blocking():
i = 0
while True:
time.sleep(1)
i+=1
print("non",i)
return True
f1 = executor.submit(blocking)
f2 = executor.submit(non_blocking)
我期望得到的输出是:
block 1
non 1
block 2
non 2
block 3
non 3
block 4
Starting pow....
non 4
non 5
non 6
non 7
non 8
但是程序在“启动电源...”之后停止运行。给出结果:
block 1
non 1
block 2
non 2
block 3
non 3
block 4
Starting pow....
https://stackoverflow.com/questions/56692439
复制相似问题