理解同时执行人.map()

2024-06-08 04:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用进程和^{}来并行化一些Python代码。看起来我可以在parralell中多次执行一个函数,方法是submitting调用,然后在将来调用^{},或者使用^{}
我想知道,后者是否只是前者的语法甜点,以及在性能方面是否存在任何差异。从文档上看似乎还不清楚。在


Tags: 方法函数代码文档进程语法差异性能
1条回答
网友
1楼 · 发布于 2024-06-08 04:21:25

它允许你同时执行一个函数多次,而不是真正的并行执行。在

就性能而言,我最近发现ProcessPoolExecutor.submit()和{}完成同一任务所用的计算时间相同。注意:.submit()返回一个future对象(我们称之为f),您需要使用它的f.result选项来查看它的结果。另一方面,.map()直接返回迭代器。在

当使用sorted方法将结果转换成有序列表时,我发现在某些场景中,整个.map()代码的计算时间可能比整个{}代码快。在

当使用list方法将结果转换成无序列表时,整个.submit()和{}代码的计算时间是相同的。而且,这些代码的执行速度比使用排序方法的代码快。在

你可以在我的answer中阅读详细信息。在那里,我也分享了我的代码,你可以看到它们是如何工作的。我希望他们能对你有所帮助。在

我没有使用ThreadPoolExecutor,所以我不能详细评论。但是,我读到它们的实现方式与ProcessPoolExecutor相同,而且它们更适合用于I/O绑定的任务,而不是CPU绑定的任务。您确实需要指定max_workers参数,即线程的最大数量,而在ProcessPoolExecutormax_workers中是一个可选参数,默认为os.cpu_count()返回的CPU数量。在

相关问题 更多 >

    热门问题