Python 做一个闹钟,用 while 循环等待时间是否是一个好办法

2020-10-16 10:57:13 +08:00
 sudoy

我在做一个闹钟,等到谋个时间就开始执行谋个动作(在下面的案例里面简化为 print('ok'))。请问这是否是最佳办法?因为我担心会不会导致占用内存过高等问题。我看有一个叫 alarm 的库,也是用 while 循环等待时间。以下是我的示例代码:

在 2020 年 10 月 17 日 10 点 50 分 50 秒的时候触发事件 print('ok')

from datetime import datetime

def alarm():
	while True:
		now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
		if now == '2020-10-17 10:50:50':
			print('ok')
			break


if __name__ == '__main__':
	alarm()
11201 次点击
所在节点    Python
108 条回复
neoblackcap
2020-10-17 20:03:17 +08:00
@sudoy sleep 问题不大,因为底层就是这样干的。要求精度不是很高的时候,这样干没啥问题。不过定时器是一个比较敏感的问题,很多人考虑的问题的维度是不一样的。有些人是需要高精度的定时器,有些人是需要硬实时的定时器,有些是需要真实墙上时间的定时器。
需求不一样,会产生的回答也不一样。认清楚自己的需求,写符合满足自己需求的程序就好了。很多人说用 XX 技术,其实你根本没有这个需要,为何要做更多无意义的事情呢?比如 timerfd + I/O multiplexing 。可以支持的精度很高,有意义么?
自己去走一走才知道鞋子合不合穿,加油吧
sudoy
2020-10-17 20:58:18 +08:00
@neoblackcap 是的,讲的真好。能实现目的,然后尽量少占用资源就够了
sudoy
2020-10-17 21:06:00 +08:00
@nuk get 了,谢谢
crella
2020-10-18 20:47:37 +08:00
这给人感觉连 c 语言考试都没过的感觉,运行一下就发现 cpu 占用 100%啦
以后不想看某些区了
crella
2020-10-18 20:51:46 +08:00
更正:是 cpu 单核占用 100%。

某台洋垃圾的六核十二线程 cpu 用 wps 打开大文档卡死,一看:只吃单核。
sudoy
2020-10-19 09:47:08 +08:00
@crella 呀,不好意思,我以为这个区没考过 C 语言也可以发帖。感觉去找本 C 语言的书来看看,请问老哥有推荐的吗?
crella
2020-10-19 10:36:50 +08:00
@sudoy 对不起,是我表达过激了。这里大佬很多的,看 jvm 和手写编译器的水平。
sudoy
2020-10-19 11:38:53 +08:00
@crella 哈哈,没关系,我其实不是 IT 行业,自学编程属于业余爱好,还要多向你们请教

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/715524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX