CLOVER🍀

That was when it all began.

Python

PyInstallerを使って、Pythonアプリケーションから単一の実行可能ファイルを作成する

Pythonで、実行可能なバイナリを作成するにはどうしたらいいのかな?と思って調べてみたのですが、PyInstallerというものを 使えばよさそうです。 PyInstaller Manual — PyInstaller 6.4.0 documentation GitHub - pyinstaller/pyinstaller: Freeze (package…

AWS Step Functionsをローカルで動かす

これは、なにをしたくて書いたもの? AWS Step Functionsをちょっと試してみたいのですが、どうやらローカルで動かせるみたいなので、ちょっと試してみようと。 AWS Step Functions とは - AWS Step Functions Step Functions Local (ダウンロード可能バージ…

PythonのAWSクライアントライブラリ、Boto 3の接続情報を設定する

これは、なにをしたくて書いたもの? PythonのAWSクライアントライブラリといえば、Boto 3というものだそうです。 AWS SDK for Python | AWS GitHub - boto/boto3: AWS SDK for Python ドキュメントは、こちら。 Boto 3 Documentation — Boto 3 Docs 1.9.134…

LocalStackを使って、AWS Lambdaを試してみる(Python版)

これは、なにをしたくて書いたもの? AWS Lambdaを動かすのに、以前LocalStackを使ってNode.jsで作成した関数を動かしてみました。 LocalStackを使って、AWS Lambdaを試してみる - CLOVER 今回は、ちょっとPythonで作成してみたいと思います。 お題 お題も前…

Pythonプログラムのメモリの使用状況をトレースする

これは、なにをしたくて書いたもの? ちょっと、Pythonプログラムで使用しているメモリの状況を追ってみようかなと。 Python標準ライブラリにtracemallocというものがあるので、こちらを利用できます。またobjgraphというものを使えば、 オブジェクトの参照…

uWSGIで複数プロセスを使ってアプリケーションを起動した時に、複数のCPUを使えているかどうか確認する

これは、なにをしたくて書いたもの? uWSGIやGunicornなど、WSGIサーバーは起動時に複数プロセスを利用させるように設定できるのですが、それで複数のCPUコアを 使ってくれるのかを試してみようかなと。 今回は、uWSGIを使って試すことにします。 環境 環境…

WSGIアプリケーションとプロセス数、スレッド数の関係を見る

これは、なにをしたくて書いたもの? 先日、WSGIサーバーとして、GunicornやuWSGIを動かしてみました。 uWSGIを試してみる - CLOVER Gunicornを試してみる - CLOVER この時に、これらのサーバーには起動時にプロセス数やスレッド数を与えることができるとわ…

Gunicornを試してみる

これは、なにをしたくて書いたもの? 前に、uWSGIについてエントリを書きました。 uWSGIを試してみる - CLOVER 今回は、同じくWSGIサーバーであるGunicornを試してみたいと思います。 Gunicorn - Python WSGI HTTP Server for UNIX Gunicorn Gunicornは、UNI…

uWSGIを試してみる

これは、なにをしたくて書いたもの? PythonでWebアプリケーションを書くためのインターフェースとして、WSGIというものがあるそうです。 Web Server Gateway Interface - Wikipedia PEP 3333: Python Web Server Gateway Interface v1.0.1 — knzm.readthedo…

はじめてのDjango

ちょっと、PythonでWebアプリケーションを書いてみようと思いまして。 Djangoというのが割とメジャーなようなので、少し試してみたいと思います。 Django? Pythonで書かれた、フルスタックなWebアプリケーションフレームワークだそうです。 The Web framewo…

Python Call Graph(PyCallGraph)でPythonの関数呼び出しのコールグラフと実行時間を見る

これは、なにをしたくて書いたもの? Python Call Graph(PyCallGraph)という、Pythonのプログラム内での関数呼び出しの様子を可視化してくれるツールが あるようです。合わせて、関数の実行時間や呼び出し回数も見れる模様。 GitHub - gak/pycallgraph: py…

line_profilerで、Pythonのプログラムを行単位でプロファイリングする

これは、なにをしたくて書いたもの? Pythonのプログラムを関数の行単位でプロファイリングしてくれるモジュール、line_profilerというものがあるらしいので、 試してみようかなと。 GitHub - rkern/line_profiler: Line-by-line profiling for Python 環境 …

Python標準のcProfile、profileを使ってプロファイリングを試す

これは、なにをしたくて書いたもの? Pythonには標準で、cProfileとprofileというプロファイリングツールがあるようです。 27.4. Python プロファイラ — Python 3.6.12 ドキュメント こちらを、ちょっと試してみようと思いまして。 環境 今回の環境は、こち…

Pythonのスレッドは、ネイティブスレッドなのか?

Pythonでのスレッドといえば、GIL(Global Interpreter Lock)があるので同時にはひとつのスレッドしか実行できない という話らしいです。 スレッド状態 (thread state) とグローバルインタプリタロック (global interpreter lock) 動的言語総まとめ : Pytho…

負荷テストツール、Locustで遊ぶ

これは、なにをしたくて書いたもの? Locustという負荷テストツールがあると聞き、テストシナリオをプログラムで書けるそうなので試してみようかと Locust - A modern load testing framework Locust コトハジメ - Qiita 今回は、どんなツールか把握するとこ…

Ubuntu Linux 18.04 LTSで、Pythonの仮想環境(venv)を使用する

昨今のPythonのパッケージ管理事情? すごく、久しぶりのPythonネタです。 昨今のPython事情があまりよくわかっていないのですが、パッケージ管理ツール、仮想環境といろいろあるようでして…。 パッケージ管理については、このまとめがわかりやすかったです…

Pythonの標準モジュールを使って、コマンドラインからHTTPサーバーを起動する

Pythonに標準モジュールとしてHTTPサーバーがあり、コマンドから簡単に使えることはなんとなく知っていたのですが、 実際に使ってみると知っていると便利だなーと思ったのでメモ。こういう時に、使うといいのではないのでしょうか。 追加のプログラムのイン…

Re: 10分でコーディング

No Programming, No Lifeで出ていたので、ちょっとやってみました。元ネタ。 難易度 激簡単 目標時間10分以内あなたはこれからトランプを配っていきます。あなたにはトランプを配る人数、 そしてトランプが渡されます。今回はとても簡単なので例題で説明し…

いろんな言語で、文字コードを指定してファイル書き込み

Readをやったので、今度はWriteということで。記載パターンは、以下の2通り。 変数messageに格納された文字列を一括してファイル出力 改行を含まない文字列リストmessagesに対して、行末に改行(LF)を付与してファイル出力 今回も、前提はこんな感じです。 …

いろんな言語で、文字コードを指定してファイル読み込み

ふと、書いてみたくなりまして。だいたいスクリプト系の言語で、よく忘れてしまうのが書いた動機です…。記載パターンは、以下の2通り ファイルの中身を全て読み込んで、1つの文字列として変数contentsに格納 ファイルの中身を全て読み込んで、改行無しの1行…

いろんな言語で、外部プロセス起動

前のエントリで、Groovy/Scalaでプロセス起動に関するコードをちょこちょこと書いていたのですが、ちょっと自分が割と使う言語でまとめてみることにしました。ほんの、サンプルです。サンプルのお題は、 外部プロセスの実行結果(戻り値)を取得し、変数ret…

Python実行時のバイトコードコンパイル(.pycファイル)の生成を抑止する

例えば、以下のようなモジュールをimportするPythonスクリプトがあったとして… #!/usr/bin/python # -*- coding: utf-8 -*- import hoge print 'Hello World!' インポートされる側。 #!/usr/bin/python # -*- coding: utf-8 -*- print 'hoge' これを実行する…

Pythonでカリー化を書いてみる

なんとなく、書いてみたくなったので。カリー化というのは、複数の引数を取る関数を、最初の引数のみ与えると残りの引数を取る関数に変換すること…です。なんか、書くより例を見た方が早いので…。例えば、こういう関数があったとして… def add(x, y): return…

「みんなのPython Webアプリ編」が無料ダウンロード可能に!!

以前自分もPythonを勉強するために購入した「みんなのPython」ですが、そのWebアプリ編がPDF化されて無料ダウンロードできるようになっているらしいです。会社の後輩から、情報提供を受けました(笑)。紹介サイトはこちら。 http://gigazine.net/news/20111…

PythonでJavaのProxyライクにAOP

前回は関数デコレータでお手軽にAOPっぽいことをやってみましたが、これだと実体のクラス/メソッド定義そのものに織り込むコードを書かないといけないのであまりいい感じがしません。だったら、やっぱりクラスベースで動的に織り込みますかってことで、Java…

関数デコレータで、AOPっぽく

なんとなく、PythonでAOPっぽいことをやってみたくなりまして。実現方法を考えてみましたが、1番簡単なのが関数デコレータを使うことかなぁと。関数デコレータは、文字通り関数を拡張するものです。まあ、とりあえず書いてみましょう。AOP適用の例としては、…

Javaプログラマ向け高階関数紹介

Javaプログラマ向けに、高階関数のお話でも。高階関数とは、「関数を引数に取る関数」のことです。本来は「関数を返す関数」(カリー化)も含むそうですが、高階関数というと専らこの意味で使われることが多いので問題ないでしょう。Javaでは、メソッドとか…