richard mendes wrote:

> The question i have is how does rpy handle multithreads.
> 
> What i've seen till now is that a r object is created when importing
> the rpy library. how does this react to multithreads.

  Those are fairly vague questions, so I'll answer the specifics:

> Is that r object connected to one R session ?

  Yes.

> Is there a way to create a new r object ?

  You can try! Doing 'from rpy import r' just runs rpy.py, and that 
defines a class 'R' and creates an object called 'r' of that class which 
is then imported into the caller. So you can try and make another by 
creating another instance:

 >>> import rpy
 >>> r2=rpy.R()
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "C:\Python25\Lib\site-packages\rpy.py", line 286, in __init__
     _rpy.r_init(HAS_NUMERIC);
RuntimeError: Only one R object may be instantiated per session

  So I guess that's a no. That error is coming from the C code, so I 
don't know how fundamental it is or how difficult it would be to make it 
work...

> what happens to the r object if i just make a new object of the class
> that calls the rpy library. Would that create a new R session ?

  Fraid not:

 >>> from rpy import r
 >>> r.assign('x',999)
999
 >>> r.ls()
'x'
 >>> r2=r
 >>> r2.ls()
'x'

  it's the same session.

> If someone knows the answers to these questions it would help me a
> lot, and save me some time writing tests to find this out.

  So I think that definitely within a single thread there can be only 
one, and probably across multiple threads too. However if you use 
os.fork() you can get a new R session...

Barry

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to