相关疑难解决方法(0)

9
推荐指数
2
解决办法
1616
查看次数

为什么在Pool中使用了2个以上的进程后没有影响?

通过使用map函数multiprocessing库中当使用 2 个以上的进程时,我看不到执行时间的差异。我正在使用 4 个内核运行程序。

实际代码非常简单,计算前 4000 个斐波那契数 4 次(= 内核数量)。它在 N 个内核之间平均分配工作(例如,当使用具有 2 个进程的池时,每个进程将计算前 4000 个斐波那契数次)。整个过程是在 N = 1 到核心数量的情况下完成的。

输出,每一行的核心数量和相应的执行时间(以秒为单位)是:

  1. 3,147
  2. 1,72
  3. 1,896
  4. 1.899

有谁知道为什么在超过 2 个内核的情况下执行时间没有减少?实际代码是:

import multiprocessing
from time import time


def F(_):
    for n in range(4 * 10 ** 3):
        a, b = 0, 1
        for i in range(0, n):
            a, b = b, a + b
    return


def pool_fib():
    n_cores = multiprocessing.cpu_count()
    args = list(range(multiprocessing.cpu_count()))
    for i in range(1, n_cores …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing python-multiprocessing

3
推荐指数
1
解决办法
116
查看次数

Prolog - 使用累加器查找第 N 个斐波那契数

我有这个代码以相反的顺序生成斐波那契数列的列表。

fib2(0, [0]).
fib2(1, [1,0]).
fib2(N, [R,X,Y|Zs]) :-
    N > 1,
    N1 is N - 1,
    fib2(N1, [X,Y|Zs]),
    R is X + Y.
Run Code Online (Sandbox Code Playgroud)

我只需要第一个元素。问题是这段代码false.在列表之后也给出了一个,所以我尝试获取第一个元素的所有尝试都失败了。有什么方法可以获取列表中的第一个元素,或者使用累加器计算第 N 个斐波那契数的任何其他方法。

提前致谢。

prolog fibonacci

1
推荐指数
1
解决办法
318
查看次数