« Windows 10はプライバシーがどうのこうの | トップページ | 有料ゲーム・アプリが「実質タダ」に!Amazon undergroundを試してみた »

2015年8月28日 (金)

Pythonのthreading, subprocess, multiprocessingの使い分け

Pythonのthreading (threadというモジュールもある), subprocess, multiprocessingはなんだか似た機能なのでいつどれを使っていいのかすぐに忘れてしまいますが、Stackoverflowのこの回答がそれぞれの使い分けについて非常によくまとまっていてるので備忘録がてら訳出というか要点を書き出してみました。

subprocessは他の実行ファイル(例、ffmpeg.exe)などをPythonから開始したいときに使う。subprocessだと生み出したプロセスとPythonとのやりとりはパイプとかファイルとかになり色々と制限がある。

Pythonモジュールや関数などをSpawnするときにはマルチコアがつかえるmultiprocessingを使う。multiprocessingはthreading/threadのほぼ上位互換なので最近はthreadingの出番はほぼない。

threadingやその下位レベルのモジュールthreadはマルチコアのCPUが普及する前からある古いモジュールなので、マルチコア未対応。つまり、GILの制限がある。それでもディスクI/Oなどの遅延を回避するのに便利なので使われてきたが、いまならmultiprocessingでも同じことができる。

新しいスレッドを開始したいのだから思わずthreadingかな?といつも思っちゃうんだけど、今はmultiprocessingを使うべきなんですね。

最近はケータイすらマルチコアですからね。

Moores_law_19702011 ウィキペディアより

この図には載っていないですがIntelから最初にでたマルチコアのPentium Dは2005年の5月だそうです。AMDもAthlon 64 x2を同時期に投入。10年前ですかぁ。

« Windows 10はプライバシーがどうのこうの | トップページ | 有料ゲーム・アプリが「実質タダ」に!Amazon undergroundを試してみた »

Python」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1169291/61328910

この記事へのトラックバック一覧です: Pythonのthreading, subprocess, multiprocessingの使い分け:

« Windows 10はプライバシーがどうのこうの | トップページ | 有料ゲーム・アプリが「実質タダ」に!Amazon undergroundを試してみた »

広告欄


やっつけタイムライン

広告欄

はてブ

人目の訪問です。

  • follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。現在Feedlyに122人登録頂いています。多謝!RSSを表示

    ブログランキング用 にほんブログ村 IT技術ブログ Pythonへ ブログランキングならblogram






    Jenny Mayhem
2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

IT技術注目記事

無料ブログはココログ