python 同时进行10亿次对比计算,什么算法可以做到?

问题是这样:

我有一大堆csv,每个csv有6千多行。需要大量的计算对比。而要进行下一步的计算,都需要上一步的计算返回结果。所以能分成的进程有限。请问有什么算法或思路能帮忙解决。
具体问题示例如下:

list1 = [A,B]
list2 = [A,C]
list3 = [B,C]
list = [list1,list2,list3]

counter.csv 中有几千行数据.

if 条件1:
    res1[]
    #筛选出来也有一千行
if 条件2:
    res2[]
    #筛选出来也有一千行
if 条件3:
    res3[]
    #筛选出来也有一千行

..........,9个条件,筛选出来9个res。三个一组对比如下:

res2和res1对比计算,得出结果A,res3和res2对比计算,得出结果B

如果

1.res1,res2,res3计算结果为[A,B]或[B,A]

2.res4,res5,res6计算结果为[A,C]或[C,A]

3.res7,res8,res9计算结果为[B,C]或[C,B]

如果以上三点的结果同时间在list=[list1,list2,list3]中(顺序可以各种全排列,只要三个计算结果同时==list1,list2,list3就可以),则成立

就是判断三个结果,是否同时等于列表的三个元素。

我目前的方法,由于每次都需要上一步的结果才能进行下一步。所以目前我只分成了6个进程。计算相当相当的慢还会卡死。可以分出来32个核心和48G内存给这个计算。但是目前我的写法完全用不上。请问有什么方法和思路能解决这个问题。

阅读 3k
2 个回答

楼主的描述,慢、卡,但CPU和内存并没有充分利用,那现在的瓶颈很可能在磁盘IO上。
大多数但磁盘环境并不适合多进程做IO读写,好的方式是一个进程负责IO读写,不做解析或只做基本的解析,多个进程负责计算,他们之间的数据传递使用队列。

大部分瓶颈都是在IO上,先把IO改成异步。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题