oct2py - вызов функции октавы с использованием потоков в python
Я пытался вызвать функцию Octave из программы Python, используя два потока. Мой октавный код просто чтобы посмотреть, как это работает -
testOctave.m
function y = testOctave(i)
y = i;
end
И программа Python просто пытается вызвать его
from oct2py import octave
import thread
def func(threadName,i) :
print "hello",threadName // This printf works
y = octave.testOctave(i)
print y // This is ignored
print 'done' // This is ignored
print 'exiting' // This is ignored
try:
thread.start_new_thread( func, ("Thread-1", 100 ) )
thread.start_new_thread( func, ("Thread-2", 150 ) )
except:
print "Error: unable to start thread"
Программа завершается без каких-либо ошибок, но в вышеуказанной функции выполняется только первая печать, все печати после вызова октавы игнорируются обоими потоками. Есть ли причина, почему это происходит, и что я могу сделать, чтобы это работало?
Программа не делает ничего особенного, я просто пытаюсь понять, как работать с oct2py
1 ответ
Создатель oct2py здесь. Когда вы импортируете октаву из oct2py, вы импортируете вспомогательный экземпляр класса Oct2Py. Если вы хотите использовать несколько потоков, вы должны импортировать Oct2Py и создать его экземпляр либо внутри своей многопоточной функции, либо предварительно выделить и передать его в качестве аргумента функции. Каждый экземпляр Oct2Py использует свой собственный сеанс Octave и выделенные файлы MAT для ввода / вывода.
from oct2py import Oct2Py
import thread
def func(threadName,i) :
oc = Oct2Py()
y = oc.testOctave(i)
print y
try:
thread.start_new_thread( func, ("Thread-1", 100 ) )
thread.start_new_thread( func, ("Thread-2", 150 ) )
except:
print "Error: unable to start thread"