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--