だいぶん前の記事にPythonをつかって一定間隔で処理を実行するというサンプルを書いていた(JavaScriptならsetIntervalに相当する処理をさせたいということだった)。しかし,この時は知らなかったが,Python for .NETを使えば.NET Frameworkの支援を受けて一定間隔処理を記述することも可能であると知った。
Python for .NETを使って一定間隔処理のサンプルは以下のようになる。ちなみにWinPython以外だと入ってないかもしれないのでpip install pythonnetの実行からになると思います。(WinPython 3.7.0.1にはpythonnetがまだ非対応で3.7.0.2から暫定対応している )
最初は,Environment.Versionを調べる例を作ろうとしていたので,最初に残っている。
タイマーtickもPythonで記述してしまう例になっている。
import clr
from time import sleep
clr.AddReference('System')
from System import Environment
from System.Timers import Timer
from System import DateTime
print(Environment.Version.ToString())
running = True
def timer_tick(o, e):
if running == True:
print(DateTime.Now.ToString())
else:
timer.Stop()
timer = Timer()
timer.Interval = 1000
timer.Elapsed += timer_tick
timer.Start()
try:
while running == True:
sleep(1)
except KeyboardInterrupt:
running = False
ちなみにEnvironment.Versionは4.5から全部4.0.**と表示されるようになってるらしい。(あれ,.NET Framework 4.0? おかしいなと思っても気にしないで)
この例では,clr.AddReference('System')はいらないらしい(Systemは暗黙的にReferenceに含まれるみたい)。