相关疑难解决方法(0)

python的多处理和concurrent.futures有什么区别?

在python中实现多处理的一种简单方法是

from multiprocessing import Pool

def calculate(number):
    return number

if __name__ == '__main__':
    pool = Pool()
    result = pool.map(calculate, range(4))
Run Code Online (Sandbox Code Playgroud)

基于期货的另一种实现方式是

from concurrent.futures import ProcessPoolExecutor

def calculate(number):
    return number

with ProcessPoolExecutor() as executor:
    result = executor.map(calculate, range(4))
Run Code Online (Sandbox Code Playgroud)

两种替代方案基本上都是相同的,但一个显着的区别是我们不必使用通常的if __name__ == '__main__'条款来保护代码.这是因为期货的实施照顾了这个还是我们有不同的原因?

更广泛地说,multiprocessing和之间有什么区别concurrent.futures?什么时候优先于另一个?

编辑:我最初假设防护if __name__ == '__main__'只是多处理所必需的是错误的.显然,对于Windows上的两种实现都需要这种保护,而在unix系统上则没有必要.

python multiprocessing concurrent.futures

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