Vitesse d'exécution d'un script utilisant une connexion à un composant COM
2 réponses
Thomas Paviot
Bonjour à tous,
J'ai remarqué un fonctionnement que je ne comprends pas lors de
l'exécution d'un script python se connecant àun server COM à l'aide des
extensions Windows pour Python.
J'ai modifié un des scripts fourni avec la distribution pywin32 :
l'objectif est de mesurer le temps d'exécution d'un script qui ouvre
Word, écrit 30 lignes de texte en couleur verte et ferme Word.
Lorsque je lance ce script, la durée d'exécution sur mon ordinateur de
bureau est de 19s en moyenne.
J'ai remarqué par hasard ce fonctionnement inexpliqué : si, pendant
l'exécution du script, je clique droit 2 fois dans la fenêtre Word (un
menu déroulant s'ouvre permettant le copier, coller etc.), la vitesse
d'exécution est très sensiblement augmentée : la durée totale chute à
environ 11s.
J'ai constaté le même phénomène pour des scripts se connectant à des
serveurs COM de SolidWorks ou Catia V5 (dans ce cas-là, la durée
d'exécution du script est divisée par 4!), et sur un ordinateur différent.
Ce gain de vitesse m'intéresse fortement. Je me demande donc comment
arriver à en profiter, sans pour autant avoir à afficher un menu déroulant.
Je joins le script en post scriptum.
Thomas Paviot
#
# Benchmark win32com
#
import win32com.client
import time
init_time=time.time()
for i in range(30):
wrange.InsertAfter("Python ligne numero :%d\n" % i)
paras = doc.Paragraphs
for i in range(len(paras)):
p = paras[i]()
p.Font.ColorIndex = 4
p.Font.Size = 16
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Desthuilliers
Bonjour à tous,
J'ai remarqué un fonctionnement que je ne comprends pas lors de l'exécution d'un script python se connecant àun server COM à l'aide des extensions Windows pour Python.
(snip)
J'ai remarqué par hasard ce fonctionnement inexpliqué : si, pendant l'exécution du script, je clique droit 2 fois dans la fenêtre Word (un menu déroulant s'ouvre permettant le copier, coller etc.), la vitesse d'exécution est très sensiblement augmentée
(snip)
Ce gain de vitesse m'intéresse fortement. Je me demande donc comment arriver à en profiter, sans pour autant avoir à afficher un menu déroulant.
AMHA, c'est plus un problème Windows/COM qu'un problème Python, tu a donc plus de chances d'avoir les bonnes réponses sur un ng dédié à Windows...
<hs> Sur le fond, je pense que ça doit être dû au fait qu'en cliquant dans la fenêtre de word, tu ramène word au premier plan, ce qui doit jouer au niveau des priorités assignées par le systèmes aux applis en court... (mais bon, vu ma connaissance de Windows, il est parfaitement possible que cette explication soit tout à fait fantaisiste...) </hs>
Bonjour à tous,
J'ai remarqué un fonctionnement que je ne comprends pas lors de
l'exécution d'un script python se connecant àun server COM à l'aide des
extensions Windows pour Python.
(snip)
J'ai remarqué par hasard ce fonctionnement inexpliqué : si, pendant
l'exécution du script, je clique droit 2 fois dans la fenêtre Word (un
menu déroulant s'ouvre permettant le copier, coller etc.), la vitesse
d'exécution est très sensiblement augmentée
(snip)
Ce gain de vitesse m'intéresse fortement. Je me demande donc comment
arriver à en profiter, sans pour autant avoir à afficher un menu déroulant.
AMHA, c'est plus un problème Windows/COM qu'un problème Python, tu a
donc plus de chances d'avoir les bonnes réponses sur un ng dédié à
Windows...
<hs>
Sur le fond, je pense que ça doit être dû au fait qu'en cliquant dans la
fenêtre de word, tu ramène word au premier plan, ce qui doit jouer au
niveau des priorités assignées par le systèmes aux applis en court...
(mais bon, vu ma connaissance de Windows, il est parfaitement possible
que cette explication soit tout à fait fantaisiste...)
</hs>
J'ai remarqué un fonctionnement que je ne comprends pas lors de l'exécution d'un script python se connecant àun server COM à l'aide des extensions Windows pour Python.
(snip)
J'ai remarqué par hasard ce fonctionnement inexpliqué : si, pendant l'exécution du script, je clique droit 2 fois dans la fenêtre Word (un menu déroulant s'ouvre permettant le copier, coller etc.), la vitesse d'exécution est très sensiblement augmentée
(snip)
Ce gain de vitesse m'intéresse fortement. Je me demande donc comment arriver à en profiter, sans pour autant avoir à afficher un menu déroulant.
AMHA, c'est plus un problème Windows/COM qu'un problème Python, tu a donc plus de chances d'avoir les bonnes réponses sur un ng dédié à Windows...
<hs> Sur le fond, je pense que ça doit être dû au fait qu'en cliquant dans la fenêtre de word, tu ramène word au premier plan, ce qui doit jouer au niveau des priorités assignées par le systèmes aux applis en court... (mais bon, vu ma connaissance de Windows, il est parfaitement possible que cette explication soit tout à fait fantaisiste...) </hs>
Méta-MCI
Bonsoir !
3ème envoi (...)
---------------------------
Bonjour !
2ème envoi (...)
---------------------------
Bonjour !
Lors du pilotage de Word par Python, via COM, j'obtiens une meilleure vitesse en travaillant en mode invisible, et en rendant word visible au dernier moment, lorsque toutes les modifs/traitements sont terminés.
En pratique, j'utilise : self.w.Visibleúlse et self.w.Visible=True
Sinon, tu peux regarder la classe que j'ai pondu (Cot ! Cot ! Cot !), là : http://mclaveau.com/ress/python/pxword.htm (adresse aussi publiée dans le Wiki)
@-salutations
Michel Claveau
Bonsoir !
3ème envoi (...)
---------------------------
Bonjour !
2ème envoi (...)
---------------------------
Bonjour !
Lors du pilotage de Word par Python, via COM, j'obtiens une meilleure
vitesse en travaillant en mode invisible, et en rendant word visible au
dernier moment, lorsque toutes les modifs/traitements sont terminés.
En pratique, j'utilise :
self.w.Visibleúlse
et
self.w.Visible=True
Sinon, tu peux regarder la classe que j'ai pondu (Cot ! Cot ! Cot !), là :
http://mclaveau.com/ress/python/pxword.htm
(adresse aussi publiée dans le Wiki)
Lors du pilotage de Word par Python, via COM, j'obtiens une meilleure vitesse en travaillant en mode invisible, et en rendant word visible au dernier moment, lorsque toutes les modifs/traitements sont terminés.
En pratique, j'utilise : self.w.Visibleúlse et self.w.Visible=True
Sinon, tu peux regarder la classe que j'ai pondu (Cot ! Cot ! Cot !), là : http://mclaveau.com/ress/python/pxword.htm (adresse aussi publiée dans le Wiki)