SGEの邪道な使い方。lock.singleton()編

SGEの邪道な使い方。gui.shell()編 - 永字八法の関連。
lock.singleton()は、本来は多重起動を防ぐための関数だが、多重起動した時に実行できる関数を指定できる。
これは結局のところ、最初の起動とそれ以降での起動での動作を変えられることを意味する。擬似的にお互い独立したスレッドを作れると解釈してよい。
これを持って画像について弱い部分 - 永字八法を検討する。
つまり、子スレッドを作り、ファイルを画像として読み込んでみる。こけなければ、それは拡張子に関わらずSGEで使える画像ファイルである。逆にこの子スレッドがこけてしまえば、それは画像ファイルではない、と言う証明になる。
ただ、本来のスレッドではないので、スレッド間の通信手段がない。この場合正しいファイルかどうか、判別結果を伝えることができない。そこで、少々迂遠だが以下の通信方法を考案する。

擬似スレッド間の通信手段

  1. 二つのディレクトリを用意する。仮に一つを"first2second"とし、もう一つを"second2first"とする。
  2. 第一スレッドはfirst2secondにランダムな名前のファイルを作り、それに第二スレッド以降へのメッセージを記述する。
  3. 第二スレッドは起動するとfirst2secondを覗き、その中の一つを選んで実行する。実行する前に、命令受領の意味でそのファイルを削除する。
  4. 第二スレッドが無事に必要な処理を終えれば、今度はsecond2firstに第一スレッドへのメッセージを作成しておく。
  5. 第一スレッドは定期的にsecond2firstを覗き、何かがあれば結果を受け取る。受け取ったメッセージは削除する。

実行の順番は全く保証されないし、OSへの負担は大きいが、悪くはないと思う。
gui.create()しなくても画像を読み込んだりできるのがポイント。第二スレッドは全くのバックグラウンドで動作させられる。