Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在/sys中轮询文件_Python_Maemo_Sys_Pyinotify - Fatal编程技术网

Python 如何在/sys中轮询文件

Python 如何在/sys中轮询文件,python,maemo,sys,pyinotify,Python,Maemo,Sys,Pyinotify,我无法读取/sys/中的一个文件,其中包含诺基亚N900手机上环境光照传感器的光强(以勒克斯为单位) 我试图使用pyinotify来轮询文件,但这在我看来似乎有点错误,因为文件总是“process\u IN\u OPEN”、“process\u IN\u ACCESS”和“process\u IN\u CLOSE\u NOWRITE” 我基本上希望尽快得到更改,如果某个更改触发事件,则执行一个类 下面是我尝试过的代码,虽然有效,但并不像我预期的那样(我希望触发process_IN_MODIFY

我无法读取/sys/中的一个文件,其中包含诺基亚N900手机上环境光照传感器的光强(以勒克斯为单位)

我试图使用pyinotify来轮询文件,但这在我看来似乎有点错误,因为文件总是“process\u IN\u OPEN”、“process\u IN\u ACCESS”和“process\u IN\u CLOSE\u NOWRITE”

我基本上希望尽快得到更改,如果某个更改触发事件,则执行一个类

下面是我尝试过的代码,虽然有效,但并不像我预期的那样(我希望触发process_IN_MODIFY):

更新1:


嗯,如果有一种特殊的机制,我一点也不知道,我想到的是:

f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
while True:
    value = f.read()
    print value
    f.seek(0)
f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
while True:
    value = f.read()
    print value
    f.seek(0)

这可以用自己的线程包装,但有人有更聪明、更少占用CPU和更快的方法来获取最新值吗?

由于/sys/文件是一个伪文件,它只显示底层、易失性操作系统值的视图,因此永远不会引发修改事件是有意义的。由于文件是从下面“修改”的,所以它不遵循常规的文件系统语义

如果从未引发修改事件,那么使用pinotify之类的包是不会有任何效果的twould最好寻找一种特定于平台的机制

对更新1的响应:

由于N900 maemo运行时支持,您最好检查它是否能够提供所需的异步事件


我想你知道,忙碌的等待是浪费。在手机上,它确实会耗尽电池电量。你至少应该在忙碌的循环中睡觉。

Mmmh,如果有一种特殊的机制,我想出来的只是以下几点:

f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
while True:
    value = f.read()
    print value
    f.seek(0)
f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
while True:
    value = f.read()
    print value
    f.seek(0)
这可以用自己的线程来实现,但有人有更聪明、占用CPU更少、获取最新价值更快的方法吗

干杯 比约恩