我正在使用multiprocessing
模块来并行化脚本,但不确定它是否使用了所有可用的内核。有没有一个简单的方法来找到它?
import numpy as np
import multiprocessing
import time
def fibonacci(n):
sequence = [0, 1]
while len(sequence) < n:
next_number = sequence[-1] + sequence[-2]
sequence.append(next_number)
return np.array(sequence) # Convert the sequence to a NumPy array
if __name__ == '__main__':
start_time = time.time()
pool = multiprocessing.Pool()
last_result = None
n = 100
for i in range(0, n):
result = fibonacci(i)
#print([result])
U = time.time() - start_time
print("Elapsed time =", U)
3条答案
按热度按时间irtuqstp1#
使用所有内核的主要代码可能看起来像这样:
请注意,这并不一定比单个过程更快。由于多处理的开销,它可能需要一些微调(特别是通过为
map
设置块大小)。zf9nrax12#
你只初始化了多处理池,但没有使用所有的cpu,甚至没有使用多处理,而是使用以下代码:
pool.apply_async()
方法调用fibonacci()
函数并行方法wj8zmpe13#
准确地监控CPU使用情况可能很困难,尤其是在 * fibonacci()* 函数的寿命很短的情况下。但是,如果您使用适当的多处理技术,您可以放心,您的系统的能力将得到充分利用。
下面是一些类似于OP的代码,它将充分利用可用的CPU:
块大小的计算在许多情况下是合理的,但不是所有情况