On Tuesday, November 29, 2011 5:02:31 PM UTC+8, Ulrich Eckhardt wrote: > Am 29.11.2011 08:34, schrieb Mrinalini Kulkarni: > > I need to run .pyc files using python c api. if i do PyImport_Import it > > executes the script. However, i need to pass a set of variables and > > their values which will be accessed from within the script. How can this > > be done. > > I don't think what you want is possible, due to a think-o in your > design. Let me explain... > Firstly, .pyc files are basically the same as .py files, only in a > different presentation. Then, PyImport_Import is basically the same as > using "import" in a Python program. Now, and that is where your fault > lies, importing a module actually means executing that module! For > example, the definition of a function is code that when executed will > cause a function to be created and attached to the current scope with > the according name. This is what makes it so easy to implement local > functions that are parametrized by arguments to the outer function. > Still, a function is not something that is "static", like in C or Java, > but rather the result of executing its function definition. > > Now, how to get around this? The specialty about the import is that the > __name__ attribute is not set to "__main__", upon which many scripts > already react. So, in order to "prevent execution" (in the sense that > you probably mean), you simply wrap the according code in a function. > The function definition will then be executed, giving you a function > that you can call with the according parameters, but the function itself > will not be executed automatically. If you want that to happen when > executing the .pyc file directly, check the content of __name__ and call > the function if it is "__main__". > > Note that another approach would be introspection, traversing through > the namespaces to find out those parameters, but I would consider this > solution as hackish if the one above is feasible. > > Good luck! > > Uli
Please use psyco and pyrex and C or whatever that can read saved results in a file, or just learn how to replace a hash or a sort in python's build in library of better speed, don't do reference overheads in those c type variables that won't overflow and underflow and used by other objects in python. Not trivial but well documented to cheer for a race! -- http://mail.python.org/mailman/listinfo/python-list