Python

update create

www.python.org

Code

Docstring

Docstring Conventions
PEP 257

Naming

https://inflection.readthedocs.io/en/latest/

os

File Size

import os
path = '/etc/hosts'
print(os.path.getsize(path))
print(os.stat(path))

cf. os.listdir() or os.scandir() URL

format

https://docs.python.org/3/library/string.html#format-specification-mini-language

>>> '{:,}'.format(1234567890)
'1,234,567,890'
>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'

とかいろいろ

pip

pipの内容を一括更新。
-Uは、パッケージを最新にするため、django1.11系からdjango2.1系へ依存関係も含め更新されるため
用途に合わない場合は使わないほうがよい。

pip list | awk '{ print $1 }' | xargs pip install -U  # pip old
pip freeze --local | awk -F '==' '{ print $1 }' | xargs pip install -U

並行処理

  • 逐次: Sequential
  • 並列: Parallel
  • 並行: Concurrent

メモ

menu = asyncio.run

task = asyncio.create_task( co-routine )
manu = await task


result = await asyncio.gather( *tasks )

async with asyncpg.create_pool(dns) as pool:
    tasks = [ pool.fetchrow("SELECT *****",  な感じ

done, pending = await asyncio.wait(cors)
    done, pending = loop.run_until_complete(parallel_by_wait())
    for d in done:
        dr = d.result()

------
asyncio.Queueでqueueを作成
  • coroutine: async関数の返り値はcoroutine
  • Future: jQueryにおけるDeferred的なオブジェクト
  • set_resultやset_exceptionを使って実行結果を伝播させることができる
  • Task: Futureのサブクラスで、実行を管理
  • Semaphore: 並列での実行数を制御

matplotlib

全体概要の参考.

早く知っておきたかったmatplotlibの基礎知識、あるいは見た目の調整が捗るArtistの話

Font Settings.

matplotlibで日本語

設定ファイルの場所

import matplotlib
matplotlib.matplotlib_fname()

Customizing matplotlib

Fontの確認

fc-list

or

import matplotlib.font_manager
matplotlib.font_manager.findSystemFonts()

font.seriffont.sans-serifに、Ricty Diminishedを追加。

Cache関連.
~/.cache/matplotlib
matplotlib.font_manager._rebuild()

Matplotlib in a web application server

SampleDataset

UnitTest

unittest template

Package

pip broken

wget https://bootstrap.pypa.io/get-pip.py 
python get-pip.py
pip install -r requirements.txt

PEP8

flake8でokで、普通に実行できる(3.9)のにdind(docker image python3.8)で invalid syntax とか https://www.python.org/dev/peps/pep-0008/#maximum-line-length

URL

https://packaging.python.org/guides/migrating-to-pypi-org/
2017年7月3日からURLが変更しpython setup.py register が不要。

  • PyPI
https://pypi.python.org/pypi から https://upload.pypi.org/legacy/
  • TestPyPI
https://testpypi.python.org/pypi から https://test.pypi.org/lecagy/ に変更
  • TestPyPI
https://testpypi.python.org/simple/ から https://test.pypi.org/simple/