[Paraview] Call Python function with parallel reader without pvbatch directly

Tim Gallagher tim.gallagher at gatech.edu
Wed Jan 27 05:28:45 EST 2016


Andy, 

I think I've made a mock up of what you are trying to do and may have gotten it to run correctly, if I understood your problem accurately. I have a structure like: 

package/ 
driver/ 
driver.py 
scripts/ 
filewithparaviewstuff.py 
utilities.py 

The contents of each file are really simple: 

utilities.py: 
def hi(): 
print "Hi there" 

filewithparaviewstuff.py: 
from .utilities import * 
from paraview.simple import * 

def my_pv(): 
hi() 

driver.py: 
import sys 
sys.path.append('/path/to/package/') 
from scripts.filewithparaviewstuff import * 

my_pv() 

>From here, I can do a `pvbatch driver.py` and it prints the "Hi there" string as expected. I can also run it on 12 processors and get the expected 12 "Hi there" strings, so it seems to work in parallel also. 

Does that help clear up the relationship between the files? Or did I misunderstand something and my simple example doesn't replicate the system properly? 

Tim 

----- Original Message -----

From: "Andy Smith" <agsmith424 at gmail.com> 
To: paraview at paraview.org 
Sent: Tuesday, January 26, 2016 11:10:34 PM 
Subject: [Paraview] Call Python function with parallel reader without pvbatch directly 



I'd like to use a driver Python script to call a Python function within a module that uses ParaView to read a file in parallel and I was wondering the best way to go about this. 


A little background: 

The file structure is something like this: 


mypythonpackage/ 

scripts/ 

my_driver_script.py 
mypythonpackage/ 

paraview/ 

filewithparaviewstuff.py 

utilities.py 



The driver script takes inputs and then calls a function in filewithparaviewstuff.py that uses ParaView to load a large data file and do some data analysis. I need to load the dataset in parallel since it is quite large. To get around this in the past I've used two different methods: 


1. Use the subprocess Python package inside the my_driver_script.py to call the filewithparaviewstuff.py using pvbatch . 

2. Use the subprocess Python package inside the my_driver_script.py to start a pvserver and then connect to this server within the function inside filewithparaviewstuff.py 


The issue I have is the filewithparaviewstuff.py calls some functions in the utilities.py file. I'm trying to follow PEP 328 and use import statements within filewithparaviewstuff.py like : 


from .utilities import my_utility_function 


inside the filewithparaviewstuff.py but this causes problems if I use method 1, of calling the filewithparaviewstuff.py directly with pvbatch or if I try to make a '__main__' function in the filewithparaviewstuff.py and call that directly with pvbatch . 


Am I doing something fundamentally wrong or has anyone encountered this situation and come up with a more elegant solution? If not, should I just keep going with my option 2? 


Thanks, 

Andy 

_______________________________________________ 
Powered by www.kitware.com 

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html 

Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView 

Search the list archives at: http://markmail.org/search/?q=ParaView 

Follow this link to subscribe/unsubscribe: 
http://public.kitware.com/mailman/listinfo/paraview 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20160127/c4dc8562/attachment.html>


More information about the ParaView mailing list