Re: Respuesta lentísima de SimpleX MLRPCServer en windows xp
Oswaldo Hernández <[email protected]> Mon, 14 Dec 2009 16:43:31 +0100
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------030806070202030604000607 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable lasizoillo escribi=C3=B3: > El d=C3=ADa 12 de diciembre de 2009 09:20, Sio2 <[email protected]> e= scribi=C3=B3: >=20 >> =C2=BFHay alg=C3=BAn m=C3=A9todo de SimpleXMLRPCServer que se ejecute = despu=C3=A9s de la >> funci=C3=B3n que invoca el cliente? Como verify_request, por ejemplo, = se >> ejecuta antes de ella. Es para hacerlas expl=C3=ADcitas en el c=C3=B3d= igo y a=C3=B1adir >> alg=C3=BAn print y ver exactamente en que punto es en el que se produc= e el >> retraso. >> >=20 > Mucho mejor, lo puedes ver con cualquier cosa que hagas en python: > http://docs.python.org/library/profile.html >=20 >=20 He modificado el cliente y el servidor para comprobar los tiempos totales= de ejecuci=C3=B3n y los tiempos=20 de la funcion en el servidor. Los resultados que obtengo en un blucle de = 10 llamadas son estos: Versiones: Windows XP SP3, Python 2.5.4 Linux Debian 5, Python 2.5.2 Tiempo local =3D Tiempo total del cliente en ejecutar el procedimiento Tiempo remoto =3D Tiempo utilizado por el servidor en ejecutar la funcion - Servidor Windows, Cliente Windows (distintos equipos): Tiempo local:0.28200006485, Tiempo remoto:0.0 Tiempo local:0.202999830246, Tiempo remoto:0.0 Tiempo local:0.203000068665, Tiempo remoto:0.0 Tiempo local:0.203000068665, Tiempo remoto:0.0 Tiempo local:0.203000068665, Tiempo remoto:0.0 Tiempo local:0.18799996376, Tiempo remoto:0.0 Tiempo local:0.18799996376, Tiempo remoto:0.0 Tiempo local:0.203000068665, Tiempo remoto:0.0 Tiempo local:0.203000068665, Tiempo remoto:0.0 Tiempo local:0.203000068665, Tiempo remoto:0.0 Tiempo medio de ejecucion:0.20790002346 - Servidor Windows, Cliente Linux Tiempo local:0.133645057678, Tiempo remoto:0.0 Tiempo local:0.199771165848, Tiempo remoto:0.0 Tiempo local:0.20098400116, Tiempo remoto:0.0 Tiempo local:0.201014995575, Tiempo remoto:0.0 Tiempo local:0.20096206665, Tiempo remoto:0.0 Tiempo local:0.20107793808, Tiempo remoto:0.0 Tiempo local:0.201005935669, Tiempo remoto:0.0160000324249 Tiempo local:0.201040029526, Tiempo remoto:0.0 Tiempo local:0.200972080231, Tiempo remoto:0.0 Tiempo local:0.201069831848, Tiempo remoto:0.0 Tiempo medio de ejecucion:0.194154310226 - Servidor Linux, Cliente Windows Tiempo local:0.108999967575, Tiempo remoto:5.60283660889e-005 Tiempo local:0.0, Tiempo remoto:5.88893890381e-005 Tiempo local:0.0, Tiempo remoto:5.79357147217e-005 Tiempo local:0.0, Tiempo remoto:5.69820404053e-005 Tiempo local:0.0, Tiempo remoto:5.81741333008e-005 Tiempo local:0.0160000324249, Tiempo remoto:5.69820404053e-005 Tiempo local:0.0, Tiempo remoto:5.69820404053e-005 Tiempo local:0.0, Tiempo remoto:5.79357147217e-005 Tiempo local:0.0150001049042, Tiempo remoto:5.57899475098e-005 Tiempo local:0.0, Tiempo remoto:5.79357147217e-005 Tiempo medio de ejecucion:0.0140000104904 El Servidor linux es indudablemente mas r=C3=A1pido ya que el tiempo medi= o de ejecucion est=C3=A1 en 0.014=20 segundos mientras que el servidor windows est=C3=A1 en 0.20 segundos. El = motivo: vete a saber, mayor=20 coste de creaci=C3=B3n de sockets, antivirus que supervisan las conexione= s, ... En mi caso, y en la aplicaci=C3=B3n en la que lo uso, esos 0.20 segundos = de respuesta son un tiempo=20 aceptable, por eso indicaba que lo uso sin problemas. De todas formas 0.20 segundos no son los 4.5 segundos que dices que te ta= rda a ti. Adjunto los modulos de cliente y servidor modificados por si quieres comp= arar los tiempos en tu sistema. Saludos, --=20 ***************************************** Oswaldo Hern=C3=A1ndez oswaldo (@) soft-com (.) es ***************************************** PD: Antes de imprimir este mensaje, aseg=C3=BArese de que es necesario. El medio ambiente est=C3=A1 en nuestra mano. --------------030806070202030604000607 Content-Type: text/x-python; name="cliente.py" Content-Disposition: inline; filename="cliente.py" Content-Transfer-Encoding: quoted-printable #!/usr/bin/env python #coding=3Dutf-8 import xmlrpclib from sys import argv import time try: SERVER=3Dargv[1] except IndexError: SERVER=3D'localhost' servidor =3D xmlrpclib.ServerProxy('http://'+SERVER+':9000') suma =3D 0 for x in range(10): inicio =3D time.time() (tr, dir) =3D servidor.list_contents('.') fin =3D time.time() suma +=3D fin-inicio print "Tiempo local:%s, Tiempo remoto:%s" % (fin - inicio, tr[1] - tr= [0]) #print "Coste Llamada:%s, Ejecuci=C3=B3n:%s, Devoluci=C3=B3n:%s, Tota= l:%s" % (tr[0]-inicio, tr[1] - tr[0], fin - tr[1], fin-inicio) =20 =20 print "Tiempo medio de ejecucion:%s" % str(suma/10) --------------030806070202030604000607 Content-Type: text/x-python; name="serv.py" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="serv.py" IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQojY29kaW5nPXV0Zi04DQoNCmZyb20gU2ltcGxlWE1M UlBDU2VydmVyIGltcG9ydCBTaW1wbGVYTUxSUENTZXJ2ZXIsIFNpbXBsZVhNTFJQQ0Rpc3Bh dGNoZXIsIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyDQojaW1wb3J0IGxvZ2dpbmcNCmlt cG9ydCBTb2NrZXRTZXJ2ZXINCmltcG9ydCBvcw0KaW1wb3J0IGRhdGV0aW1lDQppbXBvcnQg dGltZQ0KDQpjbGFzcyBEaXNwYXRjaGVyKFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIpOiANCiAg ICBkZWYgX2Rpc3BhdGNoKHNlbGYsIG1ldGhvZCwgcGFyYW1zKToNCiAgICAgICAgaWYgbWV0 aG9kID09ICJfX25vbnplcm9fXyI6DQogICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KDQogICAg ICAgIGlmIG5vdCBtZXRob2Quc3RhcnRzd2l0aCgiXyIpIGFuZCBoYXNhdHRyKHNlbGYsIG1l dGhvZCk6ICAgICAgICAgICAgDQogICAgICAgICAgICBpbmljaW8gPSB0aW1lLnRpbWUoKQ0K ICAgICAgICAgICAgcmVzID0gZ2V0YXR0cihzZWxmLCBtZXRob2QpKCpwYXJhbXMpDQogICAg ICAgICAgICAjIHByaW50ICJNZXRvZG86JyVzJywgaW5pY2lvOiVzLCBkdXJhY2lvbjogJXMs IGZpbjolcyIgJSAobWV0aG9kLCBzdHIoaW5pY2lvKSwgc3RyKHRpbWUudGltZSgpLWluaWNp byksIHRpbWUudGltZSgpKQ0KICAgICAgICAgICAgcmV0dXJuIChpbmljaW8sIHRpbWUudGlt ZSgpKSwgKHJlcywgKQ0KICAgICAgICANCiAgICAjIC0tLSBNZXRvZG9zIHB1YmxpY2Fkb3Mg UlBDIC0tLS0NCiAgICBkZWYgbGlzdF9jb250ZW50cyhzZWxmLCBkaXJfbmFtZSwgKmFyZ3Mp Og0KICAgICAgICByZXR1cm4gb3MubGlzdGRpcihkaXJfbmFtZSkNCiAgICAgICAgICAgIA0K DQpjbGFzcyBTZXJ2ZXIoU29ja2V0U2VydmVyLlRDUFNlcnZlciwgRGlzcGF0Y2hlcik6DQog ICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQ Q1JlcXVlc3RIYW5kbGVyLA0KICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1GYWxzZSwg YWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9IlVURi04Iik6DQogICAgICAgICAgICAgICAg IA0KICAgICAgICBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIs IHJlcXVlc3RIYW5kbGVyKQ0KICAgICAgICBEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFs bG93X25vbmUsIGVuY29kaW5nKQ0KICAgICAgICANCiAgICAgICAgc2VsZi5sb2dSZXF1ZXN0 cyA9IEZhbHNlDQoNCiMgQ3JlYWNpb24gZGVsIHNlcnZpZG9yDQpzZXJ2ZXIgPSBTZXJ2ZXIo KCcnLCA5MDAwKSkgICAgICANCg0KdHJ5Og0KICAgIHByaW50ICJVc2EgQ29udHJvbC1DIHBh cmEgc2FsaXIiDQogICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQ0KZXhjZXB0IEtleWJvYXJk SW50ZXJydXB0Og0KICAgIHByaW50ICdTYWxpZW5kbyc= --------------030806070202030604000607 Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline _______________________________________________ Lista de correo Python-es = http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes --------------030806070202030604000607--