日々精進

新しく学んだことを書き留めていきます

%%timeで処理時間を計測するとwall timeとcpu timeが全然違う

Jupyterで%%timeを使って処理時間を計測したところ wall timeが140sでcpu timeが2sぐらいだった。 原因は並列処理をしていたため。cpu timeはメインスレッドの処理時間のみ計測した結果っぽい。 並列処理をした場合の全スレッドのcpuを使った時間は出せないものか。。

参考:

real time/user CPU time/system CPU timeの違いをメモsiguniang.wordpress.com

ubuntuのバージョンを18.04にするとdocker imageのbuildがtzdataのinstallで止まるようになった

原因はtzdataのinstall時にtimezoneを選択するよう求められること。 Dockerfileに以下を追加すると選択しなくてよくなる。

ENV DEBIAN_FRONTEND=noninteractive

参考:

qiita.com

Pythonで「ImportError: No module named」エラー

色々原因はありうるが、自作モジュールでかつコマンドラインから実行している.pyファイルと別のフォルダにあるモジュールでこのエラーが出ている場合、 モジュール検索パスが通っていないことがある。 モジュール検索パスを追加したい場合はPYTHONPATHかsys.pathを使う。詳細は以下参照。

note.nkmk.me

PyCharmでコードブロックを折りたたむ

以下のようにregionコメントを入れるとPyCharmのエディタ上でコードを折りたためる。

#region ~をするコード
...
#endregion

ホントはコードが長くなってきたら別モジュールに分けた方が良いんだろうけど、この方法でもコードを見やすくできる。

参考:

[https://pleiades.io/help/pycharm/working-with-source-code.html#:embed:cite]

PyCharmで別プロジェクトをattachすると「The project at … uses a non-standard layout and cannot be attached to this project」エラー

原因は不明だが、以下で直った。

※「The project at … uses a non-standard layout and cannot be attached to this project」というメッセージがダイアログに表示されたら、一度Yesを選択し、
 その後attachするとAttachできる。それでもだめな場合はPyCharmを閉じ、attachする側とされる側の.ideaフォルダを削除して再度開き直すとAttachできる。

pythonプログラム起動時に「ValueError: Unable to configure handler 'fileHandler'」エラー

原因はloggerの設定でfileHandlerを定義していたが、ログファイルの出力先フォルダが存在しないこと。

以下のように設定している場合、/home/ec2-user/m5/logフォルダがないとエラーになる。もっと原因がわかりやすいエラーメッセージにしてほしい。。

handlers:
  consoleHandler:
    level: DEBUG
    class: logging.StreamHandler
    stream: ext://sys.stdout
    formatter: debugFormatter

  fileHandler:
    level: DEBUG
    class: logging.handlers.TimedRotatingFileHandler
    formatter: debugFormatter
    filename: /home/ec2-user/m5/log/m5.log
    when: MIDNIGHT
    encoding: utf-8