Ubuntu Server 18.04 で試す。
$ sudo pip3 install uwsgi
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() |
b = '''def q(d): | |
s = "b = '" | |
s += """''""" | |
s += d | |
s += "''" | |
s += "'" | |
s += """ | |
""" | |
return s |
((lambda (x) | |
(list x (list (quote quote) x))) | |
(quote (lambda (x) (list x (list (quote quote) x))))) |
Python 組み込みの logging
モジュールを使う。
multiprocessing
モジュールではないので、マルチプロセスではない。したがって、Queue も標準ライブラリにある queue
モジュールで構わない。
マルチスレッドのコードは、各スレッドから共有されるデータ構造は競合状態になることを避けるために適切な排他処理をする必要がある。これは、メインのコードだけでなく、 使用する外部ライブラリでも同じだ。すなわち、マルチスレッドのプログラムは、使用するライブラリまで含めてスレッドセーフでないといけない。ただ、共有するデータがないなら スレッドセーフでなくても安全だ(そうだよな)。