首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ThreadPoolExecutor阻塞所有线程的pow函数

使用ThreadPoolExecutor阻塞所有线程的pow函数
EN

Stack Overflow用户
提问于 2019-06-21 03:08:31
回答 2查看 183关注 0票数 1

尽管关于ThreadPoolExecutor的第一个示例使用了pow函数( https://docs.python.org/3/library/concurrent.futures.html ),但是使用pow似乎会在被调用时异常地阻塞所有线程。请参阅下面的代码。

代码语言:javascript
复制
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)

我期望得到的输出是:

代码语言:javascript
复制
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

但是程序在“启动电源...”之后停止运行。给出结果:

代码语言:javascript
复制
block 1
non 1
block 2
non 2
block 3
non 3
block 4
Starting pow....
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56692439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档