SUPPORT UKRAINE
- Your indifference to the act of cruelty can thrive rogue nations like Russia -
タグ
python
を含むブログ一覧
【Python 雑談・雑学 + coding challenge】sorted 組み込み関数の key パラメータをうまく使って、カスタムオブジェクトを簡単にソートしよう! __getitem__、__len__ 特殊関数 ( special methods, dunder methods ) を実装すれば立派なシーケンス ( sequence ) です
Published 2020年8月29日7:09 by mootaro23
唐突に coding challenge です!
問題: トランプをソート ( sort ) してください。 ( 制限時間: 25 分 )
ナナさんはトランプを 1 組持っています ( Deck クラスオブジェクト )。
妹にグチャグチャにシャッフルされてしまって途方に暮れています。
どうぞカードをソートしてあげてください。
カードの rank …
【 Effective Python, 2nd Edition + coding challenge 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第2回 - Conway's Game of Life coding challenge の実装例と課題、の巻
Published 2020年8月26日19:04 by mootaro23
今回は、前回 の 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回
Published 2020年8月25日10:18 by mootaro23
プログラムが大きくなってくれば、必然的に、その複雑さも増していきます。
コードの明快さ、テストのし易さ、効率性を維持しながらプログラムを大きくしていくのは、プログラム開発における最も難しい課題のひとつであることは疑う余地がありません。
またプログラムの拡大に伴う変更の中でも、シングルスレッドプログラムのマルチスレッドプログラムへの移行はもっとも困難を伴うもののひとつでしょう。…
【 Effective Python, 2nd Edition 】Queue クラスを利用した producer-consumer パイプライン ( pipelines ) を構築して、マルチスレッドシーケンス処理をエレガントに管理しよう! 並行実行 ( parallelism ) と並列処理 ( concurrency ) もついでにちゃんとイメージしよう!
Published 2020年8月21日16:25 by mootaro23
唐突ですが、放牧飼いをしている乳牛を搾乳する手順を考えます。牛たちはもう搾乳室 ( パーラー ) の前に集まっています、良い子!!
a: 搾乳室の入口を開けて1頭1頭牛を呼び込みます。
1: 乳頭の汚れを落とし、かつ、刺激します ( 泌乳ホルモン分泌のために )。
2: ミルカーを装着して搾乳します。
3: 搾乳が終了したら乳頭にディッピング ( 消毒のよ…
【Python 雑談・雑学 + coding challenge】Python の pprint 機能を自分で実装してみよう! 自分なりの Pretty Print できちゃいます!!
Published 2020年8月19日8:17 by mootaro23
Python では pprint モジュールが提供されていて、ネストしているデータ構造を階層的に出力してくれます。
from pprint import pprint
a = [1, 2, 3, 4, 5]
b = [1, [2, [5, 6], 3], 4]
pprint(a, indent=4, width=15)
# [1, 2, 3, 4, 5]
…
【 Effective Python, 2nd Edition 】threading モジュールの Lock クラスを利用してマルチスレッド実行時のデータ競合 ( data races ) を予防しよう! GIL はデータ構造 ( data structure ) の安全性まで面倒を見てくれません
Published 2020年8月17日15:59 by mootaro23
こちらの記事 で、Python におけるマルチスレッド実行は GIL ( Global Interpreter Lock ) の制約を受けてある瞬間に動作している CPU コアは 1 つだけであり、シリアル実行とトータルな実行時間は変わらない、それは、予期しない割り込みによってインタプリタが保持しておくべき状態が影響を受けないようにするためだ、という話をしました。
であれば、プログラム…
【 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 ( …