お知らせ:

【Python 雑談・雑学 + coding challenge】itertools モジュールの combinations() メソッドを自分で実装してみよう!

Tags: challenge , python , itertools , combinations

Published 2020年9月1日17:01 by T.Tsuyoshi

さて、itertools モジュールの combinations() メソッドを使ったことがありますか? シーケンス要素の「組み合わせ」を返してくれます。 from itertools import combinations nums = [0, 1, 2, 3] print(list(combinations(nums, 2))) # [(0, 1…

【 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

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