To expose a whole namespace the simplest way is probably to call 
scriptRuntime.LoadAssembly(some_assembly);  All of the public types will then 
be available for importing from IronPython.  That means they won't all be 
available at the top-level.  If that's not ok you could use reflection and call 
DynamicHelpers.GetPythonTypeFromType(...) and inject all the types you want.

As for interop the performance should be fine.  When using dynamic from C# the 
overhead should basically be similar to the overhead of calling a function 
within Python.  And for Python calling into C# the overhead is the same as any 
Python code calling into any of the runtime - in other words pretty darn fast.  
For a simple function call to a Python function last I measured I believe it 
was around 40 instructions on x86 to perform the call.

For example on my laptop this runs in about 1/3 of a second and performs 10 
million function calls:

import time

def f():
                def g(): pass
                for i in xrange(10000000):
                                g()


s = time.clock()
f()
e = time.clock()

print e - s

So what probably matters a lot more is what the function is doing.


From: users-boun...@lists.ironpython.com 
[mailto:users-boun...@lists.ironpython.com] On Behalf Of Iivari Mokelainen
Sent: Thursday, September 02, 2010 9:29 AM
To: users@lists.ironpython.com
Subject: [IronPython] Integration

Salut, fellow coders!

I have an application where i need some live coding to debug and use it. I've 
been coding in C# for ages now.

I looked into different languages, and found python. And obviously fell in love.
Now i have a home-made interactive python console with my application. I 
implemented suggestions with dir() and so on.

tldr:
The problem im facing is that I need to integrate whole application with the 
console now. I know I can expose types and variables thru scope.SetVariable but 
what I need is to expose a whole namespace to the scope.

Any help would be appreciated.

P.S. How fast is interop between python and C#? Would it be ok to have a python 
function as dynamic in C# and calling it about 250 times a second?

Thanks,
    Iivari Mokelainen
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to