0

スクリプトを最適化するという目標を念頭に置いて、Python で初めて同時実行に直面しています。基本的に、いくつかのファイルに対して os.system を使用してサードパーティの jar ツールを呼び出すスクリプトがあります。私の最初の「手続き型」バージョンは、スレッド ( threading.Threadおよびthreading.Queue ) 127を使用した後、完了するまでに約 135 秒かかり、現在はマルチプロセス ( multiprocessing.Processおよびmultiprocessing.JoinableQueue )に切り替えて113 秒かかりました...しかし、それでもまだ長いですしばらくお待ちください...フィードバックをお寄せください。また、問題を解決できる記事を紹介していただけますか?

(私は Python 2.7.1 を使用しており、サードパーティのモジュールは避けたい)

4

1 に答える 1

2

多くの人は、マルチスレッドによってアプリケーションが「魔法のように」高速化されると考えているようです。マルチスレッドによるパフォーマンスの向上は、いくつかの要因によって異なります。主に、CPU コアの数とアプリケーションの種類です。

「アプリケーションの種類」とは、アプリを分割して並列実行することに意味があるかどうかを指しています。それを判断するのに十分な情報が提供されていませんが、それを分析して、それが理にかなっているかどうかを判断する必要があります.

今日のほとんどの CPU はマルチコアであるため、コアよりも多くのスレッドを作成しない限り、スレッド化はそれに縛られるべきではありません。そのため、作成するスレッドの数に注意してください。

マルチプロセッシング (フォークされたプロセス) がスレッド化よりも高速になる理由が気になる場合は、Pythonグローバル インタープリター ロック(GIL) が原因である可能性が最も高く、基本的に Python マルチスレッド化のパフォーマンスが低下します。

更新:コンパイルしていて (「Google Closure JavaScript コンパイラを使用しています」というコメントに基づいて)、Python を使い続けたい場合は、SConsを試してください。ビルド スクリプトがすべて Python で記述されている、非常に優れたビルド ツールです。

于 2012-10-23T14:52:46.423 に答える