善良なまはげと粗末な満足ステーキ 子の健やかな成長のため、夜はなるべく早く寝て欲しいなと思い、できる限り家のことは前倒しで済ませて早めに寝床に誘い込むようにしている。が、寝ない。とにかく寝ない。下手したら寝床にも行こうとしない。 そんなとき、これに頼る。 www.youtube.com なまはげちゃ…

8.1 スレッド状態 (thread state) とグローバルインタプリタロック (global interpreter lock) Python インタプリタは完全にスレッド安全 (thread safe) ではありません。 マルチスレッドの Python プログラムをサポートするために、グローバルな ロックが存在していて、現在のスレッドが Python オブジェクトに安全に アクセスする前に必ずロックを獲得しなければならなくなっています。 ロック機構がなければ、単純な操作でさえ、マルチスレッドプログラムの 実行に問題を引き起こす可能性があります: たとえば、二つのスレッドが 同じオブジェクトの参照カウントを同時にインクリメントすると、 結果的に参照カウントは二回でなく一回だけしかインクリメントされない かもしれません。 このため、グローバルインタプリタロックを獲得したスレッドだけが
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Python Memo以前に作った簡単なソケット通信を改造して、サーバー側の処理をスレッドに処理させることにする。こうすることで、複数のクライアントからの要求を同時に受け付けることができる。simpleserver.pyを改造したthreadserver.pyを作成する。clientは引き続きsimpleclient.pyを作成する。simpleserver.pyの実行結果を見ると、途中から新たなクライアントが接続してきているのが分かる。各スレッドは、クライアントから空白文字列を受信すると廃棄されるようにする。threadserver.py import socket, threading, time host = '' port = 15000 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socke
Python のスレッドについてちょっと調べてみた. Javaだとselectがない(new IOを使うとそれっぽくは書けるが, すごく面倒) ので, スレッドがないと通信系のプログラムが書けないけど, Pythonにはちゃんとselectがあるので, これまであまり使ってこなかった. でも, やっぱりちゃんと勉強しておこうということで. Pythonにはスレッド用のモジュールとして, thread と threading の二つがある. 前者は非常に基本的なスレッドとロックオブジェクトを提供していて, 後者は前者を用いて構築された, より抽象度の高いスレッドライブラリ, という位置づけらしい. プログラマは基本的に後者だけ見てればいいのだろう. threadingが提供するオブジェクトは, 次の7つ. Thread:スレッド Lock:排他ロック RLock: リエントラントな排他ロック
multiprocessing の基本¶ サブプロセスを使用する最も簡単な方法は対象関数と共に Process オブジェクトをインスタンス化することで、その処理を開始させるために start() を呼び出してください。 import multiprocessing def worker(): """worker function""" print 'Worker' return if __name__ == '__main__': jobs = [] for i in range(5): p = multiprocessing.Process(target=worker) jobs.append(p) p.start()
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー いやー,multiprocessingモジュールイイよ。パねえよ。要はプロセス間通信を行うときに便利なパッケージで,threadingと似たようなAPIなのでGILが回避できてマルチプロセッサとかマルチコアの性能を有効に使えてウハウハとか,リモートマシンにあるプロセスと通信したりオブジェクトをやりとりしたりできてウハウハとか,まあそういうモノです。これでおっきしない奴は技術者として大切な資質を失っていると思うよ。べつにおっきしなくてもいいんだけど,そういう奴とは一緒に仕事したくないよ。 ドキュメントのイントロダクションを超訳してみたです。 はじめに multiprocessingはth
経緯 最近書いているプログラムで無限ループするワーカースレッドを立てまくるものがあって, それを signal で安全に終了させる手段が知りたかった. 課題プログラム 以下のようなプログラムがあります. import threading import time def loopfunc(event): print "Thread Started" while not event.isSet(): time.sleep(1) print "Thread End" def main() : threads = [] e = threading.Event() for x in range(10): threads.append(threading.Thread(target=loopfunc, args=(e,))) threads[x].start() for th in threads:
SQLiteとは Python2.5には、標準でSQLiteという軽量データベースが含まれている。 SQLiteは、JAVAでいうところのHSQLDBやApache Derbyのような感じのようである。 SQLLiteはデーモンやサービスではなく、スタンドアロンでのみ動作する。(DerbyやHSQLDBは組み込みモードとサーバーモードの両方をもつが。) また、データベースのストアもディスク上の単一ファイルになる。 Windowsでいうところの、ACCESS95〜2000で使われていた、JETデータベースエンジンのMDBファイルのような感じであろうか。 要するに単なるライブラリである。 ライセンスは、なんとパブリックドメイン(著作権放棄)である。 そのため、Pythonに限らず、C/C++、Perl、PHPなどに広く組み込まれている。 Python2.4まではアドオンとして別途インストールす
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く