2011-04-18 69 views
4

在多處理環境中調用RPy函數是否安全,並且是否存在有關應該注意的RPy的任何多處理問題?使用RPy進行多處理安全嗎?

一個簡單的例子可能如下:

from multiprocessing import Pool 
from rpy import * 

def f(x): 
    return r.mean(x) 


if __name__ == '__main__': 
    p = Pool(5) 
    print sum(p.map(f, [range(1, 1000000), range(2, 2000000), range(3, 3000000)])) 

回答

1

眼看多滋生新的Python實例池中的每個工人實例,它們不共享公共資源 - 包括R過程的情況下, - 很可能它是線程安全的。最好的方法是測試它並看看。

+0

你能提出一種我可以測試的方法嗎? – Nixuz 2011-04-18 21:05:22

+0

如果上面的代碼運行並給出了您所期望的答案,那就是您的測試並通過了。對於更復雜的代碼,我只會按照模塊文檔中的指導進行編寫。如果它完全運行,你應該很好。多處理是非常愚蠢的,所以不用擔心 - 如果你沒有錯誤,你已經得到它。 :) – ktdrv 2011-04-18 21:13:41

0

我使用多處理和rpy2沒有問題。不能和rpy(v1)交談,但它可以工作的機會很大。

相關問題