У меня есть python script, время выполнения которого составляет 1,2 секунды, пока оно выполняется автономно.
Но когда я выполняю его 5-6 раз параллельно (я использую postman для ping url несколько раз), время выполнения увеличивается.
Добавление разбивки времени.
1 run -> ~1.2seconds
2 run -> ~1.8seconds
3 run -> ~2.3seconds
4 run -> ~2.9seconds
5 run -> ~4.0seconds
6 run -> ~4.5seconds
7 run -> ~5.2seconds
8 run -> ~5.2seconds
9 run -> ~6.4seconds
10 run -> ~7.1seconds
Снимок экрана с верхней командой (задано в комментарии):
Это пример кода:
import psutil
import os
import time
start_time = time.time()
import cgitb
cgitb.enable()
import numpy as np
import MySQLdb as mysql
import cv2
import sys
import rpy2.robjects as robj
import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()
from rpy2.robjects.packages import importr
R = robj.r
DTW = importr('dtw')
process= psutil.Process(os.getpid())
print " Memory Consumed after libraries load: "
print process.memory_info()[0]/float(2**20)
st_pt=4
# Generate our data (numpy arrays)
template = np.array([range(84),range(84),range(84)]).transpose()
query = np.array([range(2500000),range(2500000),range(2500000)]).transpose()
#time taken
print(" --- %s seconds ---" % (time.time() - start_time))
Я также проверял потребление памяти с помощью watch -n 1 free -m
, а потребление памяти также заметно увеличивается.
1) Как я могу убедиться, что время выполнения script остается постоянным каждый раз.
2) Могу ли я постоянно загружать библиотеки, чтобы время, затрачиваемое script на загрузку библиотек и потребляемой памяти, можно было свести к минимуму?
Я сделал обход и попытался использовать
#!/home/ec2-user/anaconda/envs/test_python/
но это не имеет никакого значения.
EDIT:
У меня есть сервер AMAZON EC2 с оперативной памятью 7,5 ГБ.
Мой php файл, с которым я вызываю python script.
<?php
$response = array("error" => FALSE);
if($_SERVER['REQUEST_METHOD']=='GET'){
$response["error"] = FALSE;
$command =escapeshellcmd(shell_exec("sudo /home/ec2-user/anaconda/envs/anubhaw_python/bin/python2.7 /var/www/cgi-bin/dtw_test_code.py"));
session_write_close();
$order=array("\n","\\");
$cleanData=str_replace($order,'',$command);
$response["message"]=$cleanData;
} else
{
header('HTTP/1.0 400 Bad Request');
$response["message"] = "Bad Request.";
}
echo json_encode($response);
?>
Спасибо