首页 > 解决方案 > Python Concurrent.futures 执行时间与常规循环执行相同

问题描述

我正在开发一种用于解决问题的元启发式算法,通过进行一些研究,我发现并行性可能会提高代码的性能。我已经实现了 concurrent.futures Python 内置功能,但与普通循环方法相比并没有节省时间。问题很大,因此我无法提供确切的代码,但我试图在概念上改进的循环部分如下:

for instance in range(1,n+1):
    instance_result = SomeFunction(instance)
    dict_with_results[instance] = instance_result
...

我已将代码改编为 concurrent.futures 并行性,它看起来像这样:

with concurrent.futures.ThreadPoolExecutor() as executor:
     instance_1 = executor.submit(SomeFunction, 1)
     instance_2 = executor.submit(SomeFunction, 2)
     ...
     instance_n = executor.submit(SomeFunction, n)

dict_with_results[instance_1]  = instance_1.result()
dict_with_results[instance_2]  = instance_2.result()   
...
dict_with_results[instance_n]  = instance_n.result()  

尽管代码运行良好,但速度并没有提高。“SomeFunction”执行平均持续 5 秒,因此并行性确实可以提高性能,但它并没有...

有什么建议吗?提前致谢。

标签: pythonmultithreadingparallel-processingconcurrent.futures

解决方案


推荐阅读