如下例子,因为实时性要求高,需要断检查 val
是否存在值,val
的值会在其它线程中改变,用 while
循环会导致 CPU 飞起,加了 time.sleep
实时性又不够强,所以想问下,还有什么方式可以达到我想要的效果呢?
val = None
while True:
if val:
print('ok, you got val')
else:
time.sleep(0.1)
1
ferock 2020-04-10 17:27:50 +08:00 via Android
思路感觉就歪了
|
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......
|