【Python 雑談・雑学 + coding challenge】Python の pprint 機能を自分で実装してみよう! 自分なりの Pretty Print できちゃいます!!

Tags: miscellaneous , challenge , python , pprint , pretty print

Published 2020年8月19日8:17 by T.Tsuyoshi

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 ) の安全性まで面倒を見てくれません

Tags: python , muttual-exclusion lock , multi threading , effective , lock

Published 2020年8月17日15:59 by T.Tsuyoshi

こちらの記事 で、Python におけるマルチスレッド実行は GIL ( Global Interpreter Lock ) の制約を受けてある瞬間に動作している CPU コアは 1 つだけであり、シリアル実行とトータルな実行時間は変わらない、それは、予期しない割り込みによってインタプリタが保持しておくべき状態が影響を受けないようにするためだ、という話をしました。 であれば、プログラム…

【 Effective Python, 2nd Edition 】Python のスレッド ( thread ) はブロッキング I/O ( blocking I/O ) 対策で存在しています。決して並行処理 ( parallelism ) を実現するためではありません!

Tags: gil , python , thread , blocking io , effective

Published 2020年8月15日22:18 by T.Tsuyoshi

Python の標準実装は CPython と呼ばれ、Python プログラムを 2 ステップで実行します。 まず最初に、ソースコードを解析し、バイトコード ( bytecode ) へとコンパイルします。 続いて、そのバイトコードをスタックベースのインタプリタ ( stack-based interpreter ) で実行します。 そのインタプリタは、GIL ( …

【Python 雑談・雑学 + coding challenge】iterator protocol の実装 --- __iter__ 特殊関数は何を返すべき? イテレータオブジェクト ( iterator object ) なら何でも、そう、generator expression でもOKです!

Tags: generator , iterable , iterator , __iter__ , miscellaneous , challenge , __next__ , stopiteration , python

Published 2020年8月13日17:06 by T.Tsuyoshi

さて、今回もちょっとしたコーディングチャレンジ ( coding challenge ) から。 問題 ( 制限時間: 25 分 ): 2 つの引数 (シーケンスと数値) を取るイテラブルクラス ( iterable class ) を定義します。 このクラスのオブジェクトは、「数値」の回数だけ「シーケンス」の要素を順番に返します。 もし「数値」が「シーケ…

【Python 雑談・雑学 + coding challenge】Python data structure の1つ、set を活用していますか? 複数のシーケンスの包含関係を調べるには最適です

Tags: miscellaneous , comprehension , challenge , python

Published 2020年8月11日21:03 by T.Tsuyoshi

まずはご自分でコーディングにチャレンジ ( coding challenge ) してみて下さい。 問題 ( 制限時間: 25 分 ): 1 行に 1 つの単語が記述されているテキストファイルを用意します。 こちら のファイルを利用させていただくことも可能です。23 万 5 千行あります。 用意したファイルを読み込み 1 行 1 行読みながら、a, e, …