Частота смены сюжета Mayavi в реальном времени падает, когда скрипт вызывается из bash или C++
Чтобы визуализировать данные, поступающие с датчика, в режиме реального времени, я создал скрипт Python 2.7, который отображает данные, поступающие с частотой 50 Гц, используя Mayavi. Скрипт запускает два потока, поток сбора данных, который непрерывно собирает данные (Xdata
,Ydata
,Zdata
) и поток черчения, который наносит на график данные.
Сюжет настраивается с помощью:
@mlab.animate(delay=animation_delay)
def make_graph():
while True:
dataX=acquisitionThread.Xdata
dataY=-1*acquisitionThread.Ydata
dataZ=acquisitionThread.Zdata
obj.mlab_source.u=dataX.flatten()
obj.mlab_source.v=dataY.flatten()
obj.mlab_source.w=dataZ.flatten()
yield
make_graph()
mlab.show()
Теперь, когда я запускаю свой скрипт из IDE, которую я использую (Spyder 2.7), анимация плавная, но когда я запускаю скрипт из bash, используя...
python ./animationScript.py
... частота кадров значительно падает, и взаимодействие с сюжетом (вращение сюжета и т. д.) становится очень громоздким.
В конечном счете, я хотел бы включить анимацию в приложение Qt и вызвать ее, используя:
char* args[]={"python","/path/to/fieldAnimation.py"};
pid_t pid;
pid=fork();
if(pid==0)
execvp(args[0],args);
Однако запуск такого сценария также приводит к тому, что анимация имеет очень медленную частоту кадров.