多处理和python代码
我的python代码执行太慢了,我有7个处理器,python只使用一个,我刚刚发现了多处理选项,但我不知道如何使用它,所以你能用这个选项修改我下面的代码吗多处理和python代码,python,multithreading,python-3.x,parallel-processing,multiprocessing,Python,Multithreading,Python 3.x,Parallel Processing,Multiprocessing,我的python代码执行太慢了,我有7个处理器,python只使用一个,我刚刚发现了多处理选项,但我不知道如何使用它,所以你能用这个选项修改我下面的代码吗 from itertools import combinations def New5(A,C5): d=True for a in A: if(d==True): d=(a not in C5) return d def refcomb10(h): T=[]
from itertools import combinations
def New5(A,C5):
d=True
for a in A:
if(d==True):
d=(a not in C5)
return d
def refcomb10(h):
T=[]
C5={0}
b=0
C10=combinations(range(h),10)
for S in C10:
A=combinations(S,5)
if(New5(A,C5)):
A=combinations(S,5)
for a in A:
C5.update({a})
T.append(S)
b+=1
print(b,S)
return([T,C5])
U=refcomb10(60)
请原谅我的英语您可能不需要使用多线程来解决性能问题。这些改进可能更有帮助:
- 删除
打印(b,S)
- 如有可能,拆下第二个
A=组合(S,5)
- 替换
与for a in A: C5.append(a)
- 分析您的代码,可能如下所示:。找出哪些功能比较慢,并尝试使其更快
C(100,10)*C(10,5)
的可能性刚好超过430亿次)。。。。以每秒一百万个组合的速度,完成这个过程需要138年。找到一个更好的算法几乎肯定比更快地运算要好。@HughBothwell我想做的是得到所有没有相同组合C(X,5)的组合C(X,10),例如:这些组合:(1,2,3)(1,4,5)(1,6,7)(2,4,7)(2,5,6)(3,4,6)(3,5,7)都是C(7,3),其中每个C(7,2)=(1,2)(1,3)(1,4)…)仅出现once@HughBothwell我修改了问题中的代码,我发布了整个代码,我希望你有一个替代方案。我认为这些更改不会有什么区别,因为“如果……:”的条件很少得到满足,我修改了问题并发布了整个代码,希望你有一个解决方案@BrianMalehornAh,你是对的。您真正的问题是:组合(范围(h),10)
。60选择10=75394027566。这个列表中有750亿个东西,这太多了,无法迭代(python可以每秒迭代大约100万个东西)。
C5.extend(A)