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

Tags: refactoring , python , thread , concurrency , fan-out , fan-in , effective

Published 2020年8月31日6:35 by T.Tsuyoshi

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

【Python 雑談・雑学 + coding challenge】sorted 組み込み関数の key パラメータをうまく使って、カスタムオブジェクトを簡単にソートしよう! __getitem__、__len__ 特殊関数 ( special methods, dunder methods ) を実装すれば立派なシーケンス ( sequence ) です

Tags: miscellaneous , challenge , python

Published 2020年8月29日7:09 by T.Tsuyoshi

唐突に coding challenge です! 問題: トランプをソート ( sort ) してください。 ( 制限時間: 25 分 ) ナナさんはトランプを 1 組持っています ( Deck クラスオブジェクト )。 妹にグチャグチャにシャッフルされてしまって途方に暮れています。 どうぞカードをソートしてあげてください。 カードの rank …

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

Tags: challenge , python , concurrency , conway's game of life , effective

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…

【 Effective Python, 2nd Edition + coding challenge 】プログラム開発のどの段階で並列処理 ( concurrency ) が必要になるのだろう? そのときどのようにリファクタリング ( refactoring ) していけばいいのだろう? を考えてみるシリーズ ( のはず ) 第1回

Tags: challenge , python , concurrency , conway's game of life , effective

Published 2020年8月25日10:18 by T.Tsuyoshi

プログラムが大きくなってくれば、必然的に、その複雑さも増していきます。 コードの明快さ、テストのし易さ、効率性を維持しながらプログラムを大きくしていくのは、プログラム開発における最も難しい課題のひとつであることは疑う余地がありません。 またプログラムの拡大に伴う変更の中でも、シングルスレッドプログラムのマルチスレッドプログラムへの移行はもっとも困難を伴うもののひとつでしょう。…

【 Effective Python, 2nd Edition 】Queue クラスを利用した producer-consumer パイプライン ( pipelines ) を構築して、マルチスレッドシーケンス処理をエレガントに管理しよう! 並行実行 ( parallelism ) と並列処理 ( concurrency ) もついでにちゃんとイメージしよう!

Tags: python , thread , pipeline , concurrency , queue , parallelism , producer-consumer , effective

Published 2020年8月21日16:25 by T.Tsuyoshi

唐突ですが、放牧飼いをしている乳牛を搾乳する手順を考えます。牛たちはもう搾乳室 ( パーラー ) の前に集まっています、良い子!! a: 搾乳室の入口を開けて1頭1頭牛を呼び込みます。 1: 乳頭の汚れを落とし、かつ、刺激します ( 泌乳ホルモン分泌のために )。 2: ミルカーを装着して搾乳します。 3: 搾乳が終了したら乳頭にディッピング ( 消毒のよ…