add 'profile': log individual starting times, and use them on next run to estimate...
[enigma2.git] / lib / python / Tools / Profile.py
diff --git a/lib/python/Tools/Profile.py b/lib/python/Tools/Profile.py
new file mode 100644 (file)
index 0000000..1c44bc8
--- /dev/null
@@ -0,0 +1,42 @@
+import time
+from Directories import resolveFilename, SCOPE_SYSETC
+
+PERCENTAGE_START = 50
+PERCENTAGE_END = 100
+
+profile_start = time.time()
+
+profile_data = {}
+total_time = 1
+
+try:
+       profile_old = open(resolveFilename(SCOPE_SYSETC, "profile"), "r").readlines()
+
+       t = None
+       for line in profile_old:
+               (t, id) = line[:-1].split('\t')
+               t = float(t)
+               total_time = t
+               profile_data[id] = t
+except:
+       print "no profile data available"
+
+profile_file = open(resolveFilename(SCOPE_SYSETC, "profile"), "w")
+
+def profile(id):
+       now = time.time() - profile_start
+       if profile_file:
+               profile_file.write("%.2f\t%s\n" % (now, id))
+       if id in profile_data:
+               t = profile_data[id]
+               perc = t * (PERCENTAGE_END - PERCENTAGE_START) / total_time + PERCENTAGE_START
+               try:
+                       open("/proc/progress", "w").write("%d \n" % perc)
+               except IOError:
+                       pass
+
+def profile_final():
+       global profile_file
+       if profile_file is not None:
+               profile_file.close()
+               profile_file = None