我正在使用 mrjob 库运行 MapReduce 作业,我想将执行时间记录到 json
文件中。
我用这个 code 记录时间:
from datetime import datetime
import sys
if __name__ == '__main__':
start_time = datetime.now()
MRJobClass.run()
end_time = datetime.now()
elapsed_time = end_time - start_time
sys.stderr.write(elapsed_time)
我必须将时间打印到 stderr
,因为它只适用于这种方法。
我无法使用此代码写入 json
文件,因为我的代码将在分布式模式下运行:
data = {}
data["step1"] = elapsed_time
with open('time.json', 'w') as outfile:
json.dump(data, outfile)
如何使用 sys.stderr.write()
将经过时间写入本地文件夹中的 JSON 文件?
答案 0 :(得分:1)
json.dump
写入一个类似文件的对象——意味着它有一个 .write(str)
方法。 sys.stderr
是一个类似文件的对象:
from datetime import datetime
import sys
import time
import json
start_time = datetime.now()
time.sleep(1)
elapsed_time = datetime.now() - start_time
data = {"step1":str(elapsed_time)}
json.dump(data,sys.stderr)
输出:
{"step1": "0:00:01.004999"}