Re: [Py4j-users] Multiprocessing error
Status: Beta
Brought to you by:
barthe
|
From: Eleftherios A. <ele...@df...> - 2012-06-22 14:21:12
|
Hi Barthélémy,
thanks for your quick response. I am trying to understand your suggestion:
- On the Java side I have initialized GatewayServer on socket 25336
- On the Python side I initialized one GatewayClient per thread,
connecting to socket 25336.
Is this the right solution so that the sockets are not being shared?
best
Eleftherios
On 22/06/12 15:55, Barthelemy Dagenais wrote:
> Hi,
>
> Please try to initialize the gateway in the thread/process and not outside. I believe you may be sharing sockets across threads/processes, which would explain the weird behavior you are observing.
>
> Barthélémy
>
> On 2012-06-22, at 9:08 AM, Eleftherios Avramidis wrote:
>
>> 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
>> -------------------------------------------------------------------------------------------
>>
>>
>> ------------------------------------------------------------------------------
>> Live Security Virtual Conference
>> Exclusive live event will cover all the ways today's security and
>> threat landscape has changed and how IT managers can respond. Discussions
>> will include endpoint security, mobile security and the latest in malware
>> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>> _______________________________________________
>> Py4j-users mailing list
>> Py4...@li...
>> https://lists.sourceforge.net/lists/listinfo/py4j-users
--
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
-------------------------------------------------------------------------------------------
|