[Py4j-users] Multiprocessing error
Status: Beta
Brought to you by:
barthe
|
From: Eleftherios A. <ele...@df...> - 2012-06-22 13:24:21
|
Dear all,
I would like your help with a particular issue which occurs when I am
trying to use python multiprocessing, along with Py4j Java objects.
def singlethread(gateway):
print "Thread starting"
#create a new view for the jvm
meteor_view = gateway.new_jvm_view()
#import required packages
java_import(meteor_view, 'edu.cmu.meteor.scorer.*')
#initialize the java object
scorer = meteor_view.MeteorScorer()
print "object initialized"
#run object function
stats = scorer.getMeteorStats("Test sentence", "Test sentence !");
print stats.score
if __name__ == '__main__':
socket_no = 25336
gatewayclient = GatewayClient('localhost', socket_no)
print "Gclient started"
gateway = JavaGateway(gatewayclient, auto_convert=True,
auto_field=True)
print "Gateway started"
p = multiprocessing.Pool(2)
print "Multipool initialized"
p.map(singlethread, [gateway, gateway, gateway])
output:
Gclient started
Gateway started
Multipool initialized
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/threading.py", line 552, in
__bootstrap_inner
self.run()
File "/usr/local/lib/python2.7/threading.py", line 505, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/multiprocessing/pool.py", line 313, in
_handle_tasks
put(task)
File "/usr/local/lib/python2.7/site-packages/py4j/java_gateway.py",
line 432, in __call__
self.target_id, self.name)
File "/usr/local/lib/python2.7/site-packages/py4j/protocol.py", line
271, in get_return_value
raise Py4JError('An error occurred while calling %s%s%s.
Trace:\n%s\n' % (target_id, '.', name, value))
Py4JError: An error occurred while calling t.__getnewargs__. Trace:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1949)
at java.lang.String.substring(String.java:1916)
at py4j.Gateway.invoke(Gateway.java:250)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:124)
at py4j.commands.CallCommand.execute(CallCommand.java:81)
at py4j.GatewayConnection.run(GatewayConnection.java:175)
at java.lang.Thread.run(Thread.java:636)
I would be happy if somebody can help me find out what exactly the error
may be, or if you can indicate where I should look for the problem.
Interestingly enough, this problem doesn't occur when running without
multiprocessing. It also runs fine with other Java programs. But how can
I specify which aspect of the Java program causes the error?
best
Eleftherios
--
MSc. Inf. Eleftherios Avramidis
DFKI GmbH, Alt-Moabit 91c, 10559 Berlin
Tel. +49-30 238 95-1806
Fax. +49-30 238 95-1810
-------------------------------------------------------------------------------------------
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
Firmensitz: Trippstadter Strasse 122, D-67663 Kaiserslautern
Geschaeftsfuehrung:
Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster (Vorsitzender)
Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats:
Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
-------------------------------------------------------------------------------------------
|