我有一个代码可以调用一个函数10次。函数的执行是连续的,因此只有在函数为第一个实例返回之后,它才会再次被调用并重复相同的进程9次。这个函数是做矩阵乘法和其他一些事情,我需要时间增加EC2配置在AWS上。
我观察到,随着EC2配置的增加,执行时间略有增加(大约7-10秒)。然而,奇怪的是,当我将实例类型从1 CPU、1GB内存、更改为多CPU高内存时,会有45秒的跳跃。在此之后,上面提到的跳跃时间不超过7-10秒.
有谁能给我解释一下为什么我要面对这种现象?为什么运行时从单CPU增加到多CPU?
下面是我的流程的示例代码:
import sys
import datetime
then = datetime.datetime.now()
for i in range(0, 10):
foo = some_function(arg1, arg2)
print("*")
now = datetime.datetime.now() - then
print("runtime : ", now)
这里是实际运行时:
00:02:57
因此,运行时从(1)跳到(2),从(2)跳到(3)等等。任何帮助解释这一点将是非常感谢的。
发布于 2020-03-05 11:17:59
不知道你的程序的细节,或者你正在运行的操作系统的细节,有几件事情是可能的。
instances
上的glibc或libc多核版本编译的。
网络时间、文件系统速度等都可以发挥作用。
简短的回答:很难给出答案。
发布于 2020-03-05 15:09:39
最可能的原因是您使用的底层库利用了多个CPU。
与2 CPU相比,单CPU通常更有效。您可以研究这可能如何影响您的特定算法-您在问题中没有讨论这些问题。
关于这个现象的一个例子,请看这个答案。
Why does this Python script run 4x slower on multiple cores than on a single core
https://stackoverflow.com/questions/60543842
复制相似问题