python - 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 秒,因此并行性确实可以提高性能,但它并没有...
有什么建议吗?提前致谢。
解决方案
推荐阅读
- php - 在不使用 XAMPP 等的 Windows 10 上更新 PHP 版本
- javascript - tensorflow js 模型(从 Keras 转换而来)有 3 个输出。我怎样才能提取它们?
- python - 如果 __name__ != __main__:
- angularjs - AngularJs——对 XMLHttpRequest 的访问已被 CORS 策略阻止
- r - 在 R 中运行大型 BigQuery 代码时出错
- apache - Xamarin.Cognitive.Face API 连接问题
- icalendar - 已定义的 iCal STANDARD 或 DAYLIGHT 错误
- python - 我正在尝试安装先知库,但出现错误。我如何解决此错误?
- sql - 使用连接表的 AVG 进行 SQL 更新
- azure - Azure Devops 管道 Yaml 'Toggle Block Comment' 不起作用