検索ガイド -Search Guide-

単語と単語を空白で区切ることで AND 検索になります。
例: python デコレータ ('python' と 'デコレータ' 両方を含む記事を検索します)
単語の前に '-' を付けることで NOT 検索になります。
例: python -デコレータ ('python' は含むが 'デコレータ' は含まない記事を検索します)
" (ダブルクオート) で語句を囲むことで 完全一致検索になります。
例: "python data" 実装 ('python data' と '実装' 両方を含む記事を検索します。'python data 実装' の検索とは異なります。)
当サイトのドメイン名は " getwebtips.net " です。
トップレベルドメインは .net であり、他の .com / .shop といったトップレベルドメインのサイトとは一切関係ありません。
Effective Python
を参考にしているブログ一覧

【 Effective Python, 2nd Edition 】スレッド ( thread ) とコルーチン ( coroutine ) を混在させながら、asyncio を利用した非同期プログラムへ段階的に移行させよう!

Published 2020年10月1日21:36 by T.Tsuyoshi
前回の記事 では、ブロッキング 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 T.Tsuyoshi
さて、コルーチンを利用した fan-out、fan-in パターン実装を取り上げた記事 を読んで、「でも既存のプログラムをコルーチンを利用した非同期プログラムに移行するのは大変だ」という感想を持った方は多いようです。 Python には言語自体に非同期実行 ( asynchronous execution ) プログラムを記述するための仕様がスマートに組み込まれています。 そ…

【 Effective Python, 2nd Edition 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第 6 回 - コルーチン ( coroutines ) を利用して数多くのブロッキング I/O を並列処理する fan-out、fan-in パターンを実現しよう、の巻

Published 2020年9月15日9:20 by T.Tsuyoshi
第 1 回 第 2 回 第 3 回 第 4 回 第 5 回 第 3 回から前回の第 5 回にかけて、Thread、Thread と Queue の併用、ThreadPoolExecutor を利用したブロッキング I/O ( blocking I/O ) の効率的処理を検証してきましたが、数多くの並列処理をこなすためには今一つ、というのが実情でした。 しかし、高レベル…

【 Effective Python, 2nd Edition 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第 5 回 - 並列処理 ( concurrency ) のためにスレッド ( thread ) を利用する場合は concurrent.futures モジュールの ThreadPoolExecutor の導入を検討しましょう、の巻

Published 2020年9月8日10:29 by T.Tsuyoshi
さて、えっちらおっちらとやってきまして、このシリーズも第 5 回になっております。 取り敢えず整理も兼ねまして、過去 4 回のポストへのリンクをまとめておきます。 このシリーズで並列処理 ( concurrency ) ならびに並行実行 ( parallelism ) への検討を重ねている Conway's Game of Life の大元のコードは第 1 回と第 2 回で作…

【 Effective Python, 2nd Edition 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第 4 回 - 並列処理 ( concurrency ) 実現のために queue を利用するとリファクタリング ( refactoring ) 作業が大変です、の巻

Published 2020年9月6日9:46 by T.Tsuyoshi
シリーズ第 3 回の記事 の検証で、コンスタントに fan-out / fan-in を繰り返す場合にはスレッド ( thread ) だけでの構築は不向き、ということが分かりました。 それにも懲りず今回も Conway's Game of Life サンプルを利用して、ブロッキング I/O の並行実行 ( parallelism ) 実装に向けた最適ツールの探求を続けていきたいと思い…

【 Effective Python, 2nd Edition 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第 3 回 - Thread インスタンスの頻繁な start / join による fan-out / fan-in パターン実装は避けるべし、の巻

Published 2020年8月31日6:35 by T.Tsuyoshi
Python において I/O の並行実行を考えたときに真っ先に思い浮かぶのはスレッド ( thread ) だと思います。 しかしながら、fan-out を実現しようとして多数の並行実行ラインを作成した場合、スレッドの大きな弱点が顕わになってしまいます。 これを、前回までの coding challenge で実装した Conway's Game of Life プログラム…

【 Effective Python, 2nd Edition + coding challenge 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第2回 - Conway's Game of Life coding challenge の実装例と課題、の巻

Published 2020年8月26日19:04 by T.Tsuyoshi
今回は、前回 の Conway's Game of Life の実装を追っていきながら、並行処理 ( concurrency ) へ向けた課題を検討したいと思います。 まずは前回の Conway's Game of Life coding challenge の実装例を... グリッド ( grid ) を象徴するクラスは前回示したとおりです。 Conway's G…