2013-01-08 31 views
-1

我一直在尋找一種方法來在後臺運行一個R函數作爲一個單獨的線程。 由於R是用C編寫的,我希望有些軟件包將支持使用pthread的線程。 到目前爲止,我還沒有發現任何好東西,我測試的一些軟件包被破壞或實現了一些其他的概念。 所以我的要求就像在R控制檯內運行一個R腳本一樣單獨的pthread一樣簡單。 我如何運行一個函數或腳本作爲一個單獨的線程。R中的pthread支持

PS - 我不是在尋找像功能叉。

感謝 比涅斯

回答

3

R extensions manual

沒有爲POSIX沒有直接支持線程


或者,你可以同時使用幾個R取代的過程。在Linux下,你可以簡單地通過從終端上運行的R腳本,並添加&,例如創建一個進程:

Rscript spam.R & 

如果你堅持自R內這樣做:

system("Rscript spam.R", wait = FALSE) 

或者你可以有查看parallel包以並行運行R操作。


鑑於您的意見,我想你可以看看HighPerformance任務視圖。從引用:

的bigmemory包由Kane和愛默生允許存儲大 物體如在存儲器矩陣(以及通過文件),並使用 外部指針對象來指代他們。這允許從R訪問透明,而不會與R的內部內存限制相沖突。 在同一臺計算機上的幾個R進程也可以共享大內存對象 。

表示bigmemory包讓多個R實例訪問存儲在內存中的相同數據可能會令人感興趣。比你可以使用分叉來創建多個R實例。

+0

前2個suggetions與fork相同或添加新進程。那不是我需要的。 –

+0

爲什麼不呢?請更徹底地解釋你的問題。 –

+0

我有R控制檯,它有2 GB的數據加載到主內存中。現在我需要對該數據運行腳本,這將花費大量時間。我希望該腳本能夠在後臺運行,以便我可以在parllel中運行類似的腳本。這裏分叉不會是一個好主意,因爲2 GB的主內存需要重複或我必須尋找共享內存解決方案。線程看起來最適合我。 –