Pythonでマルチスレッドのちょっと複雑なやつを書く準備。
では、始めます。
ということで、、
Pythonでちょっと複雑なマルチスレッドのプログラムを書いてます。
途中まできて、、ちょっと頭がおいつかなくなってますね。
そう、マルチスレッドが自分の思っているような効率で書けるTOOLとかって、
なかなか無い。
無ければ作らなきゃしょうがない、、、というのが、プログラマ気質だよね。
ってことで、LOGが流れるように表示するだけのもの、でも、レーンがあって、スレッドごとの
時間軸というか、順序がそこそこ見やすいようなものを、、
っと考えました。
出来上がりのイメージは?
こんなです。
まぁ、ブラウザでどんどんtableのROWが上についかされていくようなイメージです。
タテのCOLが、スレッドごとのLOGという感じですね。
ひとつのメッセージLOGは、1行使います。
しくみーー
仕組みは、、、というか、言語とI/Fをかくと、
●言語:Python+HTML+javascript
●I/F:TCP/IP&WebSocket
そう、デスクトップだけど、ブラウザのjavascriptで動作し、PythonプログラムとWebSocketで連携させる。
開発中のPythonからは、TCP/IPでメッセージを受け取る、、そんなしくみとなります。
絵に描くと、、こんなかな。
WebSocketは、ブラウザに流れるように表示ということは、何らかのPUSH通信っぽいことをしなければできないので、そのために、、、ということになります。
理論的には、【サービス】【表示】【開発中プログラム】がどくりつしていて、
実際にはひとつのPCで作業する場合が大半ではあるのですが、
同じPCでなくても、LOGが流れるように表示する感じとなります。
ということで、WebSocketをいくつもつなげもよいだけの話なので、
複数ブラウザで複数の表示も同時にできるようにしてみた結果が、これ。
モジュールとかクラスとか
モジュールとかクラスとかは、こんな感じ、、という表です。仕組みは、、、というか、言語とI/Fをかくと、
まぁマルチスレッドものは、自分なりの作り方があって、言語に限らず似たような感じになります。
# |
階層① |
階層② |
階層③ |
説明 |
debuGuma |
ブラウザからのWebSocket接続を受け付けてブラウザと通信。表示をブラウザに委託。表示する内容はTCP/IP経由で外部のプログラムから受付。 |
|||
debuGuma_TCPSV_exec |
debuGumaで使う用のWebSocketServerをhiraTCPServerから継承して作成 |
|||
↑ |
hiraTCPServer |
defaultのsocketを使用 |
||
debuGuma_WSSV |
debuGumaで使う用のWebSocketServerをhiraWSSVから継承して作成 |
|||
↑ |
hiraWSSV |
websockets(pipします)を使用 |
||
以下、雑ものクラス群 |
||||
const |
constを作成する用 |
|||
hiraide |
雑関数とかをまとめたもの |
|||
hiraSetting |
defined的に定数の定義 |
|||
hiraThread |
Terminateを備えたThreadクラス |
|||
それぞれの詳細は、、、
class debuGuma: あれこれ、、、、 #------------------------------- if __name__ == '__main__': C = debuGuma() C.go()
●メインはこんな感じとなりますが、、、それぞれの詳細は、
別途、実際に作るプログラムの方で説明、、、かな。わかんないけど。