タグ

2012年2月13日のブックマーク (1件)

  • Python の GIL 排除のために Software Transactional Memory が注目されている理由 - methaneのブログ

    あるいは、Pythonは参照カウント方式だからGILを排除できないという誤解に対する回答。 参照カウントってアトミックなインクリメント・デクリメントさえあればセマフォとか使わないでも並列化できるんで、パフォーマンスが滅茶苦茶落ちるということはない。参照カウントに対する修正が頻発するんで、同じオブジェクトを複数のスレッドが頻繁に操作したらコア同士で1次キャッシュの取り合いになって性能上がらないけど、現状よりはだいぶマシだ。 Python で GIL の除去が難しいのは、PythonJava よりも高級なアトミック性をもつ言語だからだ。例えば、 # d1, d2 は両方ローカル変数にある辞書. d1.update(d2) これは、Python VMレベルでは、 d1 の参照、 update メソッドの参照、 d2 の参照、メソッドの呼び出し、という処理になるんだけど、このうち dict.

    Python の GIL 排除のために Software Transactional Memory が注目されている理由 - methaneのブログ