Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Python opening multiple thread of matlab

10 views
Skip to first unread message

tsjuan

unread,
Nov 11, 2006, 8:56:16 AM11/11/06
to
Hello Python Users,

I've been trying to run multiple thread of Matlab by calling its com
object
via python. However, I keep getting error message that says Python
can't
find the attribute of certain function that I want to execute in
Matlab.

I know the com function is exist, it works just fine if I don't run
within thread.
Below is my sample code, any helps or comments are appreciated.

Thanks,
Tanto

import threading
from win32com.client import Dispatch


class MyThread ( threading.Thread ):

def __init__(self,matlab_command):
self.matlab_command = matlab_command
self.matlab_object = Dispatch('matlab.application.single')
threading.Thread.__init__(self)

def run(self):
execute = getattr(self.matlab_object,'Execute')
execute(self.matlab_command)

def awesome_dud(self):
execute = getattr(self.matlab_object,'Execute')
execute(self.matlab_command)


a = MyThread('a=1:1:100')
b = MyThread('b=1:1:200')

# Running matlab function through thread (It's not working)
# =========================================================

a.start()
b.start()
a.join()
b.join()

# Running matlab function not through thread (it's working)
# =========================================================
a.awesome_dud()
b.awesome_dud()

Stefan Schukat

unread,
Nov 11, 2006, 4:15:02 PM11/11/06
to tsjuan, pytho...@python.org
Hello,

you just forgot to initialize the COM runtime for the separate thread.
try following:

def __init__(self,matlab_command):
self.matlab_command = matlab_command

threading.Thread.__init__(self)

def run(self):
import pythoncom
pythoncom.CoInitialize()
try:
matlab_object = Dispatch('matlab.application.single')
execute = getattr(matlab_object,'Execute')
execute(self.matlab_command)
finally:
matlab_object = None
pythoncom.CoUnitialize()


Stefan

> --
> http://mail.python.org/mailman/listinfo/python-list
>

0 new messages