You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速生成嵌套循环值的元组列表适配multiprocessing.starmap()

快速生成三层循环参数迭代器的方法

要给multiprocessing.Pool().starmap()生成所需的参数迭代器,有两种高效且省内存的方法:

  • 用itertools.product生成笛卡尔积:
    itertools.product可以直接生成三个range的笛卡尔积,再通过生成器表达式把固定参数l补进去:

    import itertools
    
    l = some_value
    params = ((i, j, k, l) for i, j, k in itertools.product(range(1000), range(1000), range(1000)))
    

    itertools.product返回的是迭代器,配合生成器表达式不会一次性生成所有十亿个元组,内存占用极低。

  • 嵌套生成器表达式:
    直接把原三层循环改成生成器表达式,同样避免生成完整列表:

    l = some_value
    params = ((i, j, k, l) for i in range(1000) for j in range(1000) for k in range(1000))
    

注意:绝对不要把迭代器转成列表(比如list(params)),1000×1000×1000的规模会生成十亿个元素,直接耗尽内存。starmap本身支持迭代器输入,会逐个取参数处理,完全适配这种方式。

内容的提问来源于stack exchange,提问作者TheRavenSpectre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:15:13