我想知道是否有可能在多臺機器上運行Perl中的線程。我正在集羣環境中工作,需要並行運行一些進程,但無法使用MPI。 如果線程無法跨機器使用,是否還有其他替代方案,我應該看看,這將允許我做類似的事情,而不需要特殊的模塊?Perl - 你可以在多臺機器上運行線程嗎?
回答
我在一週或兩週前偶然發現了GNU parallel
,而沒有跨越單獨的機器,它允許常規程序利用多個內核來縮短時間。可以幫助加快你正在做的任何事情。
Perl中的線程(和分支)與父線程/進程綁定在同一臺計算機上,因此不需要跨計算機線程/分支。也就是說,您可以分別使用AnyEvent::MP/Coro::MP模塊,異步事件循環框架的消息傳遞擴展和協作線程框架的Coro協作線程框架,從而使您可以創建一個節點網絡,在一個或多個節點上執行不同的任務機器。詳情請參閱AnyEvent::MP::Intro。對於不需要特殊模塊的替代方案(我猜你的意思是說模塊不在Perl發行版中),你可以想象爲你的任務編寫一個守護進程,並讓它們通過TCP或UDP進行通信。除此之外的任何事情都可能需要至少一些未安裝Perl的模塊,但可從CPAN獲得。
看看Gearman,一個多機器作業管理器隊列。它確實需要特殊模塊;我在這裏回答「以防萬一」你實際上可以使用額外的模塊/基礎設施。
有Perl綁定,Gearman::XS,我成功地在項目中使用它,我希望在請求者或工作進程可能駐留在多臺機器上的環境中完成特定任務。也適用於一臺機器和一個請求者上的多個工作進程(例如:一個特定的網絡抓取工具,它要求任何工作人員解析頁面的所有鏈接,但希望保持對結果的控制)。
它的工作方式是創建一個「worker」Perl程序,該程序具有多個子程序,可執行您希望以分佈式方式執行的操作。您可以根據需要隨時隨地啓動這些工作程序,並將其連接到一個(或多個)主減速員「經理」。 然後,您創建一個請求者(gearman客戶端)Perl程序,它將執行請求。這也可以在任何機器上運行,並會聯繫主減速機經理要求完成一些工人的具體行動。任何工作人員都會這樣做,並且您的請求者會將結果返回。
如果您的請求者不需要返回結果,但「只」需要執行任務,請改爲查看TheSchwartz,該結構具有類似的體系結構,但不提供從工人獲取消息返回到請求者,IIRC。
Check GRID :: Machine。
- 1. Perl可以在多行上運行嗎?
- 2. 我可以在多臺機器上運行F#代理嗎?
- 3. 你可以在XP機器上運行NT 4.0的Target Designer嗎?
- 4. 我們可以在多臺機器上運行量角器測試嗎?
- 5. 單臺機器上可以存在多少個線程池?
- 6. 你可以在你自己的服務器上運行jekyll嗎?
- 7. 如何在一臺機器上運行多個Perl安裝?
- 8. 你可以在iPhone或機器人上運行攪拌機遊戲嗎?
- 9. 我可以在同一臺計算機上運行兩臺Web服務器嗎?
- 10. 你能在iOS上爲每個線程運行多個runloop嗎?
- 11. 可以在遠程機器上運行本地腳本嗎?
- 12. Fabric可以在遠程Windows機器上運行shell命令嗎?
- 13. 我可以在Perl的DBI和Oracle上使用多線程嗎?
- 14. 你可以在一個cpu核心上運行兩臺服務器嗎?
- 15. 在遠程機器上運行線程
- 16. 你可以在HTML網頁上運行python程序嗎?
- 17. 在多臺遠程機器上運行並行junit測試
- 18. 我們可以在Ruby中並行運行多線程嗎?
- 19. Java在另一臺機器上運行線程
- 20. 我可以在單臺PC上運行多個JVM嗎?
- 21. 我們可以在同一臺機器上運行兩個不同執行器的gitlab運行器嗎?
- 22. 你可以在Linux中運行Xcode嗎?
- 23. 我可以在同一臺機器上運行Postgres 8.4和Postgres 9嗎?
- 24. 我可以在同一臺機器上運行visual studio 2005和visual c#2008嗎?
- 25. View的繪製方法可以在Android的後臺線程上運行嗎?
- 26. 你可以在Windows服務器上運行多個clr實例嗎?
- 27. 我可以在移動平臺上運行HTTP服務器嗎?
- 28. 我可以在一臺服務器上運行apache和glassfish嗎?
- 29. 運行在同一臺機器上的多個Java程序
- 30. 如何在多臺遠程機器上運行Jython腳本?
...爲什麼你會用這個perl?這聽起來像是這個工作的錯誤工具。 – 2010-11-18 02:32:36
你看過PVM嗎? – tchrist 2010-11-18 13:29:19