Docker Chrome における Selenium のスレッドセーフな単一ブラウザインスタンス管理

Docker コンテナ環境で Selenium を使用して Web スクレイピングを行う際、特に docker-standalone-chrome などのリモート WebDriver を利用する場合、同時に複数の Chrome インスタンスが起動・実行されるわけではなく、単一のインスタンスを共有する必要が生じることがあります。 この制約に対処するため、スレッドセーフな方法で単一のブラウ ...

9月13日 11:00 投稿

Streamlitを活用したシリアル通信ツールの実装と課題

目的 特定のフォーマットでテスト用コマンドを生成し、末尾にチェックサムを付加するシリアル通信ツールの開発。 開発プロセス 初期段階ではStreamlitで一括処理を試みたが、ポートのオープン・クローズが関数内で完結するため、設定変更や状態管理が困難だった。そこで、UI部分とシリアル処理部分を分離しようとしたが、ソケット通信を導入する必要があり、構成が複雑化 ...

9月7日 13:53 投稿

Pythonにおける並行処理とスレッドの基礎

現代のコンピュータープログラムにおいて、複数のタスクを同時に実行する「並行処理」は、アプリケーションの応答性を高め、リソースを効率的に活用するために不可欠です。Pythonでは、この並行処理を実現するための主要な手段として「スレッド」が用いられます。 プロセスとスレッドの違い 並行処理を理解する上で、まず「プロセス」と「スレッド」の違いを明確にするこ ...

8月25日 22:17 投稿

Python標準ライブラリによるスレッドプール・プロセスプールの活用と並行サーバーの構築

ThreadPoolによる非同期タスク処理 Pythonの`multiprocessing.pool`モジュールを利用することで、スレッド管理を簡素化し、I/Oバウンドな処理の効率を向上させることができます。以下のコードは、スレッドプールを生成し、複数のタスクを非同期に実行する例です。 import time from multiprocessing.pool import ThreadPool # タスク処理用の関数定義 def async_task(ta ...

8月25日 15:12 投稿

AsyncTaskの例外処理と同時実行制御の詳細解析

概要 Android開発におけるAsyncTaskは、時間のかかる処理をバックグラウンドスレッドで実行し、メインスレッドのブロッキングを回避するための便利なクラスである。しかし、AsyncTask内の例外を適切に処理し、同時実行を合理的に管理することは、アプリケーションの安定動作を確保する上で極めて重要である。この記事では、例外処理と同時実行制御の二つの側面から、Async ...

7月3日 17:27 投稿

.NET の Task.Run、LongRunning オプション、および await の動作解説

Task.Run は新しいタスクを開始しますが、必ずしも新しいスレッドを作成するわけではありません。.NET のタスクスケジューラは、スレッドプール内の既存のワーカースレッドを再利用してタスクを実行します。そのため、実際の実行スレッドはスレッドプール由来であり、新規スレッドが作られるとは限りません。 長時間実行される処理に対しては、TaskCreationOptions.LongRu ...

6月10日 16:25 投稿

.NET マルチスレッド環境における同期プリミティブの活用ガイド

並行処理におけるデータ整合性の確保 マルチスレッドプログラミングにおいて、複数のスレッドが共有リソースにアクセスする際、実行順序によって結果が不定になる現象を競合状態(Race Condition)と呼びます。この問題を解決し、複数のスレッドが同時にオブジェクトの状態を変更してもデータが破損しないように保証する仕組みをスレッド同期といいます。このような保証を ...

6月9日 19:33 投稿

Pythonのマルチスレッドと非同期IO: プログラム実行効率を向上させる両刃の剣

マルチスレッドの基本 マルチスレッドとは、1つのプログラム内で複数のスレッドを同時に実行し、それぞれが異なるタスクを処理する仕組みです。Pythonでは、threadingモジュールを用いてマルチスレッドプログラミングが可能です。この仕組みを利用することで、プログラムの並行処理能力を向上させることができます。 スレッドの作成と起動 以下は、threading.Threadクラス ...

5月25日 02:06 投稿