import datetime as dt
now_time = str(dtdatetimenow()strftime('%F %T'))
with open('xxxxtxt','w') as t:
twrite(now_time)
缩进你调一下,这不好确定缩进“xxxxtxt”是你的文件,需要跟你的Python代码文件在一个文件夹,否则前面要写绝对路径。%f表示年月日,%t表示后面的时间。
一位同学最近在备战一场算法竞赛,语言误选了 Python ,无奈只能着手对常见场景进行语言迁移。而字符串查找的场景在算法竞赛中时有出现。本文即对此场景在 Python 和竞赛常用语言 C++ 下的速度进行对比,并提供相关参数和运行结果供他人参考。
本次实测设置两个场景:场景 1 的源串字符分布使用伪随机数生成器生成,表示字符串查找的平均情况;场景 2 的源串可连续分割成 20,000 个长度为 50 的字符片段,其中第 15,001 个即为模式串,形如“ab…b”(1 个“a”,49 个 “b”),其余的字符片段形如“ab…c”(1 个“a”,48 个“b”,1 个“c”)。
本次实测中,Python 语言使用内置类型 str 的 find() 成员函数,C++ 语言分别使用 string 类的 find() 成员函数、 strstr 标准库函数和用户实现的 KMP 算法。
IPython 的 %timeit 魔法命令可以输出代码多次执行的平均时间和标准差,在此取平均时间。C++ 的代码对每个模式串固定运行 1,000 次后取平均时间。
以下时间若无特别说明,均以微秒为单位,保留到整数位。
原输出为“263 ms”。IPython 的 %timeit 输出的均值保留 3 位有效数字,由于此时间已超过 1 毫秒,微秒位被舍弃。此处仍以微秒作单位,数值记为“2630”。
本次实测时使用的设备硬件上劣于算法竞赛中的标准配置机器,实测结果中的“绝对数值”参考性较低。
根据上表中的结果,在给定环境和相关参数条件下,场景 1 中 Python 的运行时间大约为 C++ 中 string::find 的五分之一,与 std:strstr 接近;而在场景 2 中 Python 的运行时间明显增长,但 C++ 的前两种测试方法的运行时间与先前接近甚至更短。四次测试中,C++ 的用户实现的 KMP 算法运行时间均较长,长于同条件下 Python 的情况。
Python 中的内置类型 str 的快速查找( find() )和计数( count() )算法基于 Boyer-Moore 算法 和 Horspool 算法 的混合,其中后者是前者的简化,而前者与 Knuth-Morris-Pratt 算法 有关。
有关 C++ 的 string::find 比 std::strstr 运行时间长的相关情况,参见 Bug 66414 - string::find ten times slower than strstr 。
Why do you think strstr should be slower than all the others Do you know what algorithm strstr uses I think it's quite likely that strstr uses a fine-tuned, processor-specific, assembly-coded algorithm of the KMP type or better In which case you don't stand a chance of out-performing it in C for such small benchmarks
KMP 算法并非是所有线性复杂度算法中最快的。在不同的环境(软硬件、测试数据等)下,KMP 与其变种乃至其他线性复杂度算法,孰优孰劣都无法判断。编译器在设计时考虑到诸多可能的因素,尽可能使不同环境下都能有相对较优的策略来得到结果。因而,在保证结果正确的情况下,与其根据算法原理自行编写,不如直接使用标准库中提供的函数。
同时本次实测也在运行时间角度再次印证 Python 并不适合在算法竞赛中取得高成绩的说法,你们觉得呢?平仑区留下你的看法。
import datetime
nowTime=datetimedatetimenow()strftime('%Y-%m-%d %H:%M:%S')#现在
pastTime = (datetimedatetimenow()-datetimetimedelta(hours=1))strftime('%Y-%m-%d %H:%M:%S')#过去一小时时间
afterTomorrowTime = (datetimedatetimenow()+datetimetimedelta(days=2))strftime('%Y-%m-%d %H:%M:%S')#后天
tomorrowTime = (datetimedatetimenow()+datetimetimedelta(days=1))strftime('%Y-%m-%d %H:%M:%S')#明天
print('\n',nowTime,'\n',pastTime,'\n',afterTomorrowTime,'\n',tomorrowTime)
运行结果:
1,date是日期,通常就是日历上的年月日,比较大一点的时间单位。
2,time通常就是指秒钟数,即从1970年1月1日至今进过的秒钟数。或者指一天中的时分秒,比较小一点的时间单位。就像你问别人What's the time,别人会告诉你几点几分,而不会告诉你年月日。
3,datetime就是年月日和时分秒,包含以上两者。
datetime模块是用来处理日期时间的,通常是用来进行计算日期,可以很方便的使用加减运算。而time模块主要是用来处理秒钟时间的,当然这个秒钟数也可以转化成日期,获取当前日期通常就是从这个模块获取的。不过说time时,有时候表示的也会很宽泛,因为它的词义就是时间嘛,这个不用太计较的。不过date的意义是确定无疑的。
定义在默认的计时器中,针对不同平台采用不同方式。在Windows上,timeclock()具有微秒精度,但是timetime()精度是1/60s。在Unix上,timeclock()有1/100s精度,而且timetime()精度远远更高。在另外的平台上,default_timer()测量的是墙上时钟时间,不是CPU时间。这意味着同一计算机的其他进程可能影响计时
版权声明:
def clock(func):
def clocked(args, kwargs):
t0 = timeitdefault_timer()
result = func(args, kwargs)
elapsed = timeitdefault_timer() - t0
name = func__name__
arg_str = ', 'join(repr(arg) for arg in args)
print('[%08fs] %s(%s) -> %r' % (elapsed, name, arg_str, result))
return result
return clocked
@clock
def run(seconds):
timesleep(seconds)
return time
if __name__ == '__main__':
run(1)
本文为CSDN博主「FlyingPie」的原创文章,遵循CC 40 BY-SA版权协议,附上原文出处链接及声明。
原文链接:>
参考资料:
取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年到现在时间相隔的时间。你可以试下下面的方式来取得当前时间的时间戳:import timeprint timetime()
以上就是关于python作业 获取系统时间全部的内容,包括:python作业 获取系统时间、Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗、python怎样获取系统时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)