我试图将从java作业获得的时间信息与linux性能监视工具perf(具体地说是perf stat)关联起来。在
使用
String tstamp0 = String.valueOf(System.currentTimeMillis());(这实际上是从epoch开始的以毫秒为单位的时间)
而perf给出了进程开始的时间,随后的记录只显示经过的时间。在
我想做的是,将从perf stat获得的计时信息转换为毫秒,这就是我失败的地方。我将在Python中解决这个问题。在
这段代码给了我来自perf的计时信息tailit = "head -n 1 " + dataset_path
process = subprocess.Popen(tailit, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
date_time = out.split("\n")[0].split(" ")[4:]
date = date_time[3] + "-" + date_time[0] + "-" + date_time[1]
time = date_time[2]
#TIMESTAMP
INIT_TIME = datetime.datetime.strptime(date + ' ' + time, "%Y-%B-%d %H:%M:%S") + datetime.timedelta(seconds=0.01)
#df is pandas data frame
df['STAMPME'] = df['TCOUNT'].apply(lambda x: foobar(datetime.timedelta(seconds=x) + INIT_TIME))
下面的foobar将字符串转换为以毫秒为单位的时间戳,但是这没有意义。在
^{pr2}$
任何帮助都将不胜感激。在
编辑:前面的问题没有解决用毫秒将java timestamp (currentTimeMillis())与datetime关联的问题。在
例如:使用函数foobar:
如果INIT_TIME设置为2017-05-11 10:56:54.203,那么返回值是1494493014000,而它应该是1494500214203