我一直在尋找一種方法來在後臺運行一個R函數作爲一個單獨的線程。 由於R是用C編寫的,我希望有些軟件包將支持使用pthread的線程。 到目前爲止,我還沒有發現任何好東西,我測試的一些軟件包被破壞或實現了一些其他的概念。 所以我的要求就像在R控制檯內運行一個R腳本一樣單獨的pthread一樣簡單。 我如何運行一個函數或腳本作爲一個單獨的線程。R中的pthread支持
PS - 我不是在尋找像功能叉。
感謝 比涅斯
我一直在尋找一種方法來在後臺運行一個R函數作爲一個單獨的線程。 由於R是用C編寫的,我希望有些軟件包將支持使用pthread的線程。 到目前爲止,我還沒有發現任何好東西,我測試的一些軟件包被破壞或實現了一些其他的概念。 所以我的要求就像在R控制檯內運行一個R腳本一樣單獨的pthread一樣簡單。 我如何運行一個函數或腳本作爲一個單獨的線程。R中的pthread支持
PS - 我不是在尋找像功能叉。
感謝 比涅斯
沒有爲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實例。
前2個suggetions與fork相同或添加新進程。那不是我需要的。 –
爲什麼不呢?請更徹底地解釋你的問題。 –
我有R控制檯,它有2 GB的數據加載到主內存中。現在我需要對該數據運行腳本,這將花費大量時間。我希望該腳本能夠在後臺運行,以便我可以在parllel中運行類似的腳本。這裏分叉不會是一個好主意,因爲2 GB的主內存需要重複或我必須尋找共享內存解決方案。線程看起來最適合我。 –