Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多处理和python代码_Python_Multithreading_Python 3.x_Parallel Processing_Multiprocessing - Fatal编程技术网

多处理和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=[]

我的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=[]
    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)