我基本上試圖編寫一個mapreduce的多核版本來查看我是否得到了這個概念。並且還想學習Python中的線程。Python中的線程示例
我已經說了兩個字符串文本字符串。
如何使用多線程同時處理它們(讓我們將它們標記爲單詞)。 我以爲我理解文檔,但這是一個部分(多線程程序),如果它必須高效,必須非常小心。 有什麼建議嗎?
我基本上試圖編寫一個mapreduce的多核版本來查看我是否得到了這個概念。並且還想學習Python中的線程。Python中的線程示例
我已經說了兩個字符串文本字符串。
如何使用多線程同時處理它們(讓我們將它們標記爲單詞)。 我以爲我理解文檔,但這是一個部分(多線程程序),如果它必須高效,必須非常小心。 有什麼建議嗎?
我建議您嘗試使用multiprocessing
模塊,並使用其map()
方法。這將使您可以高效地使用多個內核。
由於在Python解釋器中進行了耗時的鎖定,Python線程效率不如它可能高。有一個threading
模塊,但您可能更喜歡使用multiprocessing
模塊來解決問題。
此外,如果你想確保你瞭解地圖/縮小,爲什麼不玩一個真正的地圖/縮小系統? Hadoop是一個免費提供的軟件的map/reduce系統,並且可以使用Python使用Hadoop:
http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/
版面中的CPython(標準Python實現)不適合服用多核心的優勢,在至少如果你正在編寫純Python代碼。您應該改用多個進程。 – 2012-04-08 21:10:03
您將遇到的問題是Python並不真正支持多線程。全局解釋器鎖可以防止兩段代碼真正同時運行。 – Alex 2012-04-08 21:10:05
我沒有看到合理範圍的具體技術問題。 「給我一個多線程字符串標記化的例子」在這裏並不是真正的主題。一旦你嘗試過,並且遇到了特定的障礙,請詢問一下。 – agf 2012-04-08 21:14:25