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()

●メインはこんな感じとなりますが、、、それぞれの詳細は、
別途、実際に作るプログラムの方で説明、、、かな。わかんないけど。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です