Python3エンジニア認定試験
今回は11章です!
マルチスレッド:threading
リソースを効率的に使うプログラムを書ける
<メリット>
・複数のCPUをフルに使う
・ファイルの入出力待ち時間を有効利用
<デメリット>
・バグが混入しやすくなる
・プログラムの可読性が落ちやすい
ログ取り:logging
問題が発生した時の証拠を残す
<メリット>
・バグの原因が見つけやすい
・ログは標準エラー出力。標準出力と分離可
<デメリット>
・適切なログを残すのが難しい
・大きなループ内でログを出すと大量のログを生み、
ログファイルが大きくなる
collectionモジュールのdeque
両端のリストへのアクセスを高速化
通常のリストと同様に使うことができる
<メリット>
・左端へのappendやpopをより高速に
・右端へのアクセスも効率的
<デメリット>
・両端以外のアクセスが遅い
>>>from collections import deque
>>>d = deque(["task1", "task2"])
>>>d.append("task3")
ソート済みのリストへの処理:bisect
ソートを毎回実行する必要がなくなる
<メリット>
・短いコードで書くことができる
<デメリット>
・ソート済みの必要がある
・知らない人が多い
>>>import bisect
>>>scores = [1, 2, 4]
>>>bisect.insort(scores, 3)
>>>scores
[1,2,3,4]
ヒープ:heapq
最小値が常に位置ゼロに入る
特定の条件下で有効。汎用的ではない。
<メリット>
・完全なソートが不要
最小値へのアクセスが高速
<デメリット>
・効率面からソートの代替にならない
10進数の浮動小数点計算:decimal
手計算と一致させることができる
<メリット>
・2進数の浮動小数点による計算誤差がなくなる
・丸め規則を厳密に守ることができる
>>>from decimal import Decimal
>>>0.70 * 1.05
0.735
>>>round(0.70 * 1.05, 2)
0.73
>>>round(Decimal('0.70') * Decimal('1.05'), 2)
Decimal('0.74')
感想
この章では、少し使用頻度が少ない標準ライブラリについて、
メリット・デメリットを併せて学習しました。
ライブラリを使いこなすには、これらを踏まえて検討できるようにならないといけないのですね。
出典
データサイエンティストgepuroさん
「Python3エンジニア認定基礎試験 合格への勉強方法」
https://www.youtube.com/watch?v=BUzFIGyIojg&list=PLO-KH_xqEh8FHpIUXWHVJnJLXi6XO7BF