[Durian-svn] [3276] script for gathering render times
campbell
institute at blender.org
Wed May 12 20:08:14 CEST 2010
Revision: 3276
https://blenderinstitute.dyndns.org/durian-svn/?do=log&project=durian&path=/&rev=3276
Author: campbell
Date: 2010-05-12 20:08:13 +0200 (Wed, 12 May 2010)
Log Message:
-----------
script for gathering render times
Added Paths:
-----------
frm/exr_header_collate.py
Added: frm/exr_header_collate.py
===================================================================
--- frm/exr_header_collate.py (rev 0)
+++ frm/exr_header_collate.py 2010-05-12 18:08:13 UTC (rev 3276)
@@ -0,0 +1,124 @@
+import os
+import subprocess
+import time
+
+# copied from bpy.utils
+def smpte_from_seconds(time):
+ import math
+
+ hours = minutes = seconds = frames = 0
+
+ if time < 0:
+ time = -time
+ neg = "-"
+ else:
+ neg = ""
+
+ if time >= 3600.0: # hours
+ hours = int(time / 3600.0)
+ time = time % 3600.0
+ if time >= 60.0: # mins
+ minutes = int(time / 60.0)
+ time = time % 60.0
+
+ seconds = time
+ string = "%s%02dh, %02dmin, %0.1fsec" % (neg, hours, minutes, seconds)
+ return string.replace("00h, ", " ")
+
+def format_time(file, sec):
+ return "%s | %s | %.2f" % (file, smpte_from_seconds(sec), sec)
+
+def file_date(path):
+ #currtime = (year, month, day, hour, min, sec)
+ # year, month, day, hour, minute, second, weekday, yearday, daylight = now
+ return time.localtime(os.stat(path)[8])[0:6]
+
+
+def main():
+ all_rendertimes = []
+
+ DIR = "/shared/render/"
+ for dirname in os.listdir(DIR):
+ dirname_full = os.path.join(DIR, dirname)
+ time_file = os.path.join(dirname_full, "render_times.txt")
+
+ if os.path.isdir(dirname_full):
+ exrs = []
+
+ if os.path.exists(time_file):
+ time_file_chtime = file_date(time_file)
+ else:
+ time_file_chtime = None
+
+ generate_timefile = False
+
+ for exr in sorted(os.listdir(dirname_full)):
+ if exr.endswith(".exr"):
+ # print(exr)
+ exr_full = os.path.join(dirname_full, exr)
+ exrs.append((exr, exr_full))
+
+ if time_file_chtime is None:
+ generate_timefile = True
+ else:
+ if time_file_chtime < file_date(exr_full):
+ generate_timefile = True
+
+ if generate_timefile:
+ print("Timefile writing:", time_file)
+ else:
+ print("Timefile up-to-date:", time_file)
+
+ if generate_timefile or True:
+ file_rendertimes = []
+ for exr, exr_full in exrs:
+ # yay. we have exr
+
+ out, err = subprocess.Popen(["exrheader", exr_full], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
+ # print(out)
+ lines = [l for l in out.split("\n") if "RenderTime" in l]
+ if lines:
+ # convert to time
+ time = 0.0
+ time_str = lines[0].split()[-1].replace('"', '')
+ time_split = time_str.split(":")
+ sec = float(time_split.pop())
+ if time_split:
+ sec += float(time_split.pop()) * 60.0
+
+ if time_split:
+ sec += float(time_split.pop()) * 3600.0
+
+ file_rendertimes.append((exr, sec))
+
+ if file_rendertimes:
+ avg = 0.0
+ for exr, sec in file_rendertimes:
+ avg += sec
+
+ avg /= len(file_rendertimes)
+
+ file_rendertimes.insert(0, (dirname_full, avg))
+
+ # write a txt to the farm
+ file_txt = open(time_file, 'w')
+ for item in file_rendertimes:
+ file_txt.write(format_time(*item) + "\n")
+
+ print(time_file)
+
+ all_rendertimes.append(file_rendertimes)
+
+
+
+ summery = os.path.join(DIR, "render_times.txt")
+ print(summery)
+ summery_file = open(summery, 'w')
+
+ for file_rendertimes in all_rendertimes:
+ print(1)
+ summery_file.write(format_time(*file_rendertimes[0]) + (" | items %d\n" % (len(file_rendertimes)-1)))
+
+
+if __name__ == "__main__":
+ main()
More information about the Durian-svn
mailing list