SUPPORT UKRAINE
- Your indifference to the act of cruelty can thrive rogue nations like Russia -
タグ
thread
を含むブログ一覧
1
【 Using Asyncio in Python 】Python における asyncio を利用した非同期プログラム ( asynchronous programming ) の勉強を継続する前に、今一度スレッド ( thread ) についてのちょっとした復習ノート、まとめてみた
Published 2020年10月11日19:42 by mootaro23
スレッドは OS によって提供されている機能で、プログラムの一部を並行実行するようにするものです。
OS は、マシン上で同時に動作している他のプログラムも含めて、複数のスレッドにどのように CPU リソースを割り当てるか、を決定します。
「スレッドを使うべきではない」と書いている asyncio 関連の本も沢山あるようですが、物事はそれほど単純ではありません。
長所…
【 Effective Python, 2nd Edition 】スレッド ( thread ) とコルーチン ( coroutine ) を混在させながら、asyncio を利用した非同期プログラムへ段階的に移行させよう!
Published 2020年10月1日21:36 by mootaro23
前回の記事 では、ブロッキング I/O ( blocking I/O ) とスレッド ( thread ) を利用して作成した TCP サーバー / クライアントプログラムを、コルーチン ( coroutine ) と asyncio を利用した非同期プログラム ( asynchronous program ) へとリファクタリング ( refactoring ) しました。
しかし既…
【 Effective Python, 2nd Edition 】ブロッキング I/O ( blocking I/O ) とスレッド ( thread ) を利用しているプログラムを、asyncio 組み込みモジュールを利用してコルーチン ( coroutine ) と非同期 I/O ( asyncronous I/O ) を利用したプログラムにリファクタリング ( refactoring ) しよう!
Published 2020年9月27日22:00 by mootaro23
さて、コルーチンを利用した fan-out、fan-in パターン実装を取り上げた記事 を読んで、「でも既存のプログラムをコルーチンを利用した非同期プログラムに移行するのは大変だ」という感想を持った方は多いようです。
Python には言語自体に非同期実行 ( asynchronous execution ) プログラムを記述するための仕様がスマートに組み込まれています。
そ…
【 Effective Python, 2nd Edition 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第 3 回 - Thread インスタンスの頻繁な start / join による fan-out / fan-in パターン実装は避けるべし、の巻
Published 2020年8月31日6:35 by mootaro23
Python において I/O の並行実行を考えたときに真っ先に思い浮かぶのはスレッド ( thread ) だと思います。
しかしながら、fan-out を実現しようとして多数の並行実行ラインを作成した場合、スレッドの大きな弱点が顕わになってしまいます。
これを、前回までの coding challenge で実装した Conway's Game of Life プログラム…
【 Effective Python, 2nd Edition 】Queue クラスを利用した producer-consumer パイプライン ( pipelines ) を構築して、マルチスレッドシーケンス処理をエレガントに管理しよう! 並行実行 ( parallelism ) と並列処理 ( concurrency ) もついでにちゃんとイメージしよう!
Published 2020年8月21日16:25 by mootaro23
唐突ですが、放牧飼いをしている乳牛を搾乳する手順を考えます。牛たちはもう搾乳室 ( パーラー ) の前に集まっています、良い子!!
a: 搾乳室の入口を開けて1頭1頭牛を呼び込みます。
1: 乳頭の汚れを落とし、かつ、刺激します ( 泌乳ホルモン分泌のために )。
2: ミルカーを装着して搾乳します。
3: 搾乳が終了したら乳頭にディッピング ( 消毒のよ…
【 Effective Python, 2nd Edition 】Python のスレッド ( thread ) はブロッキング I/O ( blocking I/O ) 対策で存在しています。決して並行処理 ( parallelism ) を実現するためではありません!
Published 2020年8月15日22:18 by mootaro23
Python の標準実装は CPython と呼ばれ、Python プログラムを 2 ステップで実行します。
まず最初に、ソースコードを解析し、バイトコード ( bytecode ) へとコンパイルします。
続いて、そのバイトコードをスタックベースのインタプリタ ( stack-based interpreter ) で実行します。
そのインタプリタは、GIL ( …
1