僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
しばらく嵌っていたが、考えてみれば
大した工夫は要らなかった。
手許のUbuntu-12.04 で、
import time from_time = int(time.time()) after = 0 count = 0 while from_time + 1 > after: count += 1 print count, "Hello, World!" after = int(time.time())
$ python timetest.py 1 Hello, World! 2 Hello, World! 3 Hello, World! . . . 19222 Hello, World! 19223 Hello, World! 19224 Hello, World!
回数にはずいぶん幅があった。2000回を下回ったり、
30000回を上回ったり。
$ python timetest.py | wc -l 335148 $ python timetest.py | wc -l 8312
int() を削除すると、ばらつきはかなり減ったみたい。
int()二ヶ所を取り除き、Raspbianで試す。端末に流すと3200回前後、 wc -l に通すと 17000回前後といったところか。
"Hello, World"のあたりをGPIO.OUT/IN に変えてみた。
ついでに、GPIOのアクセス間隔も計算してみる。
#!/usr/bin/env python import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) from_time = time.time() after = 0 count = 0 gpio_port = 28 while (from_time + 1) > after: GPIO.setup(gpio_port, GPIO.OUT) GPIO.setup(gpio_port, GPIO.IN) count += 1 after = time.time() print count, 1.0/count, "Hello, World!"
$ sudo python gp_io.py 22220 4.500450045e-05 Hello, World! $ sudo python gp_io.py 26056 3.83788762665e-05 Hello, World!
IN/OUTの切り替えに50マイクロセコンド程度
といったところか。
python3 向きに少し変えて(print文を)
試すと、やはり少し遅くなった。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。