0

我第一次面對Python的併發性,想到優化腳本的目標。基本上我有一個腳本調用第三方jar工具使用os.system針對某些文件。我的第一個「程序」的版本花了約135秒的時間完成,使用線程(threading.Threadthreading.Queue)127現在切換到多進程(multiprocessing.Processmultiprocessing.JoinableQueue)113秒後......但仍然是很多時間......你能給我一些反饋意見嗎?或者指給我一篇可能解決我的問題的文章?Python併發性能

(我使用Python 2.7.1,我想避免3D第三方模塊)

+1

這完全取決於你想要做什麼。由於您使用jar文件和os.system可能在您的響應時間中占主導地位的因素將在您的Java應用程序。如果你想要一個答案,請給我們更多的信息。 –

+0

我正在使用Google Closure JavaScript編譯器 – daveoncode

+0

您是否嘗試subprocess.Popen? – jvallver

回答

2

很多人似乎認爲,多線程會「神奇」,加快他們的應用程序。多線程可能提高性能取決於幾個因素:主要是CPU內核數量和應用程序類型。

當我說「應用程序的類型」時,我指的是你的應用程序是否合理分解並且並行執行。你還沒有給出足夠的信息讓我們能夠確定,但你應該分析它,並試圖確定它是否有意義。

今天大多數CPU都是多核的,所以線程不應該受此約束,除非您創建的線程多於內核,所以請注意您創建的線程數。

如果您想知道爲什麼多處理(分叉進程)比線程速度更快,最有可能是由於Python Global Interpreter Lock(GIL),這基本上導致Python多線程不是非常高性能。

更新:如果您正在編譯(根據您的評論:「我正在使用Google Closure JavaScript編譯器」)並且想要堅持使用Python,則應該嘗試SCons。它是一個非常酷的構建工具,其構建腳本都是Python。