タグ

PythonとThreadに関するraimon49のブックマーク (9)

  • Python 3.12で増えた並列処理と、これまでの並列処理の挙動を比べてみる - Qiita

    この記事ですることを3行で Pythonの標準ライブラリでできる並列実行を、あらためて総当たりで速度比較しよう ウォーターフォールチャートで、それぞれの並列処理の処理時間の特徴を可視化しよう boto3の実行をモデルケースにして、どの並列処理が一番早いのかを調べよう この記事の結論を先に Python 3.12から格的に使えるようになったサブインタープリターは、CPUで実行する処理について言えば、従来のサブプロセスよりも高速 boto3の実行は、サブインタープリターよりも署名付きURLの非同期実行のほうが速い → S3からの10ファイルの取得であれば、実行時間を90%削減できます → Bedrockの3回実行であれば、実行時間を60%削減できます 今回使ったソースコードはこちらに置いています。 お手持ちの環境で再実行できるようにしていますので、気になる方はぜひ。 どうしてこの記事を書くの

    Python 3.12で増えた並列処理と、これまでの並列処理の挙動を比べてみる - Qiita
  • PEP 703 - 兼雑記

    https://peps.python.org/pep-0703/ Python の GIL 外す話。これすごく楽しい読みものでした。参照カウントのところが一番人気だと思うのですが、他のところも色々良い。こういう、「んーこういうことするとこういう問題が起きない?」と思ったら次の章くらいでそれが説明される、みたいな読みものは大変好きです 参照カウント: オブジェクトっていうのは作ったスレッドが解放するというのがほとんどなんだから、その場合はロックをいらなくする、他に渡ったら普通の参照カウントぽくする、という話。 Swift に 2018 年に導入された 話らしい。他のスレッドに渡された後で DECREF すると他スレッド用の参照カウントが負になりうるのだけど、その時に queue に入れるということをして、ややこしいので、なんかこれ無しですむ方法はないのかなぁ……と Immortalize

    PEP 703 - 兼雑記
  • 同期エンジンの心臓部を書き換える

    0 0 719 0 この 4 年間、Dropbox では、デスクトップ クライアントの同期エンジンを白紙の状態から再構築しようと懸命に取り組んできました。同期エンジンは、デスクトップ パソコン上の Dropbox フォルダの陰に隠れた魔法です。これは、Dropbox で最も長く使われているコード部分であり、最も重要なコード部分の 1 つでもあります。今回、新しい同期エンジン(コードネーム「Nucleus」)をすべての Dropbox ユーザー向けにリリースさせていただくことを、ここに発表いたします。 同期エンジンの書き換えは当に大変な作業で、多くの環境でマイナスともなりうる構想であったことに鑑みると、手放しで祝う気持ちにはなれません。結果的には Dropbox にとって素晴らしいアイデアであったわけですが、それは、私たちがこのプロセスにどのように取り組むべきかを熟考したからこそ、たどり着

    同期エンジンの心臓部を書き換える
    raimon49
    raimon49 2020/05/27
    長年の本番環境運用でユーザーから「鍛えられた」PythonコードをRustで全面書き換えした話。覚悟やドメイン知識だけでなく大量が必要とも。
  • liris.org

    This domain may be for sale!

  • Dropboxは全部Pythonで信頼性の高いソフトウェアを作った(後編)~PyCon APAC 2013

    Pythonユーザーが集まり、情報交換し、交流するためのカンファレンス「PyCon APAC 2013」が9月13日、14日に都内で開催されました。PyCon APACはこれまでシンガポールで開催されており、今回初めて日で開催されました。 (記事は「Dropboxは全部Pythonで信頼性の高いソフトウェアを作った(前編)~PyCon APAC 2013」の続きです) Pythonは遅いのか? でもたぶん、あなたのアプリはCPUによって制約されているわけではないでしょう。ごく限られた分野、例えばゲームとか科学計算ではないのならば、多くの制約はハードディスクやネットワーク、もしくはメモリから来ているのではないでしょうか。 それにもしも当にCPUによって制約されているのであれば、そういうアプリはだいたいCやC++で書かれているとは思うけれど、Pythonにも選択肢はあって、それはCyth

    Dropboxは全部Pythonで信頼性の高いソフトウェアを作った(後編)~PyCon APAC 2013
  • Python3 Advent Calender 3日目 - New GIL を理解する - methaneのブログ

    2011 Pythonアドベントカレンダー(Python3) - connpass の3日目を担当します。 Python 3 がリリースされてから、 Python の進化は主に Python 3 で行われ、そこから Python 2 にバックポートできるものがバックポートされています(例: GCのチューニング、辞書の内包表記など)。 しかし、 Python 2 は 2.7 で新規開発を終了しており、 2.7 にバックポートされなかった機能はもう Python 3 に移行しないと利用することができません。今日は、そんな機能のひとつである New GIL を紹介します。 なお、今日紹介する内容のほとんどは UnderstaindingGIL で紹介されている内容を僕なりに要約したものです。(ただし、翻訳ではありません) 著作権の扱いがわからなかったのと、代わりに自分で図を書き起こすのが面倒だっ

    Python3 Advent Calender 3日目 - New GIL を理解する - methaneのブログ
    raimon49
    raimon49 2011/12/03
    Python 3.2からGILが変更
  • 第5回 multiprocessingモジュールによるプロセス間通信 | gihyo.jp

    multiprocessingモジュール multiprocessingモジュールは、Python2系列では2.6以降、3系列では3.0以降に標準となったモジュールです。このモジュールはthreadingモジュールに似たAPIでプロセス間通信などの機能を提供します。このモジュールにより、GILの問題を回避することができ、複数のCPUCPUコアの性能を生かすことができます。また、このモジュールはローカルのみならず、リモートでのプロセス間通信も行うことが可能で、簡単に分散処理などを実装することができます。 まず、GIL(Global Interpreter Lock)とはPythonのインタプリタ上で一度に1つのスレッドだけが動作するよう保証するためのロックです。このロックによって、同時に同じメモリにアクセスするスレッドが存在しないことを保証します。 しかしながら、このロックによって、一度に

    第5回 multiprocessingモジュールによるプロセス間通信 | gihyo.jp
    raimon49
    raimon49 2010/07/14
    マルチプロセス, プロセス間通信 3.0, 2.6以降
  • Pythonの定番モジュール集 — TRIVIAL TECHNOLOGIES 2.0

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー wiki.python.orgにはUsefulModules(Pythonの定番モジュール集)というリストがある。「開発者に有益な情報を提供するため」と注意書きがあるだけあって,これがなかなか網羅的で便利なので,翻訳しながらご紹介しましょう:-)。 リストを見ると,Web開発やテキスト処理はもちろん,数値解析,ビジュアライズ,ゲームGUIライブラリなどバリエーション豊かで,Pythonの全方位ぶりがよく見えてくる。他のカテゴリページへのポインタは,適宜リストをインラインに展開してあるものもあります。べたっと訳しちゃったので,間違いなどあるかも。コメントなどでご指摘いただけるとありがた

  • 1