
如下例子,因为实时性要求高,需要断检查 val 是否存在值,val 的值会在其它线程中改变,用 while 循环会导致 CPU 飞起,加了 time.sleep 实时性又不够强,所以想问下,还有什么方式可以达到我想要的效果呢?
val = None while True: if val: print('ok, you got val') else: time.sleep(0.1) 1 ferock PRO 思路感觉就歪了 |
2 Jooooooooo 2020-04-10 17:28:31 +08:00 其它地方变更了之后通知 |
3 tomczhen 2020-04-10 17:29:15 +08:00 via Android 典型 xy 问题。 |
4 Te11UA OP |
5 hallDrawnel 2020-04-10 17:29:50 +08:00 建议使用条件变量 |
6 Jooooooooo 2020-04-10 17:31:40 +08:00 @Te11UA 提供一个方法只要有变更就调用啊 |
7 SleipniR 2020-04-10 17:32:03 +08:00 Queue 不香吗? |
8 pmispig 2020-04-10 17:32:26 +08:00 写一个改值函数,改值必须用这个函数,在这个函数里通知你。 不然它随便改了,你要监听,那基本上就是歪路 |
9 Te11UA OP |
10 liulei281 2020-04-10 17:33:01 +08:00 threading.Condition |
11 em70 2020-04-10 17:34:00 +08:00 异步应该用回调函数啊 |
12 oahebky 2020-04-10 17:34:31 +08:00 “val 的值会在其它线程中改变” 去了解一下 python 的 event 。 |
13 ClericPy 2020-04-10 17:43:49 +08:00 我在实际使用中用的是内置库里那个 Future...... |