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

Python多进程处理不等长列表:如何实现全元素配对计算?

解决Python多进程处理不等长列表两两配对问题

问题出在你用了zip(),它会按位置将两个列表的元素配对,一旦短列表遍历完就停止,所以长列表的7、8、9没被处理。你需要的是两个列表元素的笛卡尔积(所有元素两两组合),可以用itertools.product来实现。

修改后的代码

from multiprocessing import Pool
import itertools

def run_test(short, long):
    print(f"{short}  {long}")

if __name__ == '__main__':
    short_value = [1,2,3]
    long_value = [4,5,6,7,8,9]
    # 生成两个列表的笛卡尔积,得到所有两两配对
    all_pairs = itertools.product(short_value, long_value)
    with Pool(1) as p:
        p.starmap(run_test, all_pairs)
        p.close()
        p.join()

关键说明

  • itertools.product(short_value, long_value)会生成所有可能的元素对:(1,4), (1,5), ..., (1,9), (2,4), ..., (3,9),共3*6=18组配对。
  • starmap会把每组配对的两个元素分别作为参数传给run_test函数,和你原来的调用逻辑一致。

执行后会输出所有配对,包括短列表元素和长列表中7、8、9的组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:07:09