Skip to content

Instantly share code, notes, and snippets.

@fortune
fortune / gist:1990488
Created March 7, 2012 02:22
Python の contextlib モジュールの contextmanager のようなものを自前で書くとどんな感じになるか?
def my_contextmanager(function):
class Context(object):
def __init__(self, *args, **kw):
self.ctx = function(*args, **kw)
def __enter__(self):
return self.ctx.next()
def __exit__(self, exception_type, exception_value, exception_traceback):
try:
if exception_type is None:
self.ctx.next()
@fortune
fortune / print_self.py
Created April 17, 2012 05:34
Quine プログラム。この Python スクリプトを実行すると、スクリプト自身が出力される。
b = '''def q(d):
s = "b = '"
s += """''"""
s += d
s += "''"
s += "'"
s += """
"""
return s
@fortune
fortune / quine.ss
Created April 17, 2012 08:12
Scheme で書いた Quine コード。このコードを実行すると、全く同じ内容のリストが返される。
((lambda (x)
(list x (list (quote quote) x)))
(quote (lambda (x) (list x (list (quote quote) x)))))
@fortune
fortune / README.md
Last active December 7, 2018 09:14
uwsgi を使って簡易 HTTP および HTTPS サーバを立てる

uwsgi を使って簡易 HTTP および HTTPS サーバを立てる

Ubuntu Server 18.04 で試す。

uwsgi のインストール

$ sudo pip3 install uwsgi
@fortune
fortune / README.md
Last active August 19, 2022 10:42
My Git Cheet Sheet

Git のチートシート

すでに Git はインストール済みとする。

Git の設定

まず、システム上のすべてのリポジトリに適用される設定のデフォルト値を定義する。

$ git config --global user.name "Kazuyoshi TOMITA"
@fortune
fortune / README.md
Last active October 6, 2023 07:51
Python ロギング方法
@fortune
fortune / README.md
Last active January 14, 2021 05:24
プロセスの終了ステータスと Python の multiprocessing モジュール

Python とプロセスの終了ステータス

C 言語でプログラムを書き、

return 0;
return 5;
return 255;
exit(100);
_exit(0);
@fortune
fortune / README.md
Last active February 3, 2023 12:20
Python プロセスのシグナル制御のサンプルコード

Python プロセスのシグナル制御のサンプル

@fortune
fortune / README.md
Last active February 3, 2023 11:43
multiprocessing モジュールのキューを使ったプロセス間通信のサンプルコード

multiprocessing モジュールのキューを使ったプロセス間通信のサンプルコード

Process(target=worker, daemon=False)
Process(target=worker, daemon=True)

の違いについてだが、False だと親プロセスはこの Process の終了を待つ。この場合でも親プロセスにシグナルを送って直ちに終了させることはできる。 その場合、子プロセスである Process はそのまま残る。True だと親プロセスが終了するときにこのデーモンプロセスも終了させようとする。

@fortune
fortune / README.md
Last active February 3, 2023 12:10
threading モジュールと queue モジュールによるマルチスレッドのサンプル

threading モジュールと queue モジュールによるマルチスレッドのサンプル

multiprocessing モジュールではないので、マルチプロセスではない。したがって、Queue も標準ライブラリにある queue モジュールで構わない。

マルチスレッドのコードは、各スレッドから共有されるデータ構造は競合状態になることを避けるために適切な排他処理をする必要がある。これは、メインのコードだけでなく、 使用する外部ライブラリでも同じだ。すなわち、マルチスレッドのプログラムは、使用するライブラリまで含めてスレッドセーフでないといけない。ただ、共有するデータがないなら スレッドセーフでなくても安全だ(そうだよな)。