Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / MultiThreading ...comment fait on?

MultiThreading ...comment fait on?

Remonter à Forum général Python
  • MultiThreading ...comment fait on?

    Envoyé par ph_biohazard le 8 Décembre 2008 à 19:29
    Bonjour a tous,

    Je suis en train de faire un petit script qui teste les sites de mon intranet.
    Par contre, je le trouve lent.
    Quelqu'un m'a parle de faire du multithreading.
    Est-ce que quelqu'un pourrait me montrer sur mon code comment fait on du multithrading?

    Merci pour votre aide.

    import re,urllib2
    from cStringIO import StringIO
    out = StringIO()

    geturl = open('url.lst', 'r')
    url = geturl.readlines()

    for domain in url:
    address = "http://www." + domain

    try:
    request = urllib2.Request(address, None, {'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'} )
    urlfile = urllib2.urlopen(request)
    except urllib2.URLError:
    do = 0

    page = urlfile.readlines()

    for detect in page:
    if detect.find('comme service')>=0:
    trouve = address
    print 'Site a jour : ' + address
    detectedsite = open('TROUVE.LOG' , 'a')
    detectedsite.write('\n' + trouve + '\n')
    detectedsite.close()
    if not detect.find('comme service'):
    nontrouve = address
    print "Site non a jour : " + nontrouve


    Merci pour votre aide
    • Re: MultiThreading ...comment fait on?

      Envoyé par lusirap le 10 Décembre 2008 à 09:19
      Bonjour,
      J'avais mis les urls python.org,... seulement pour tester... je ne voulais
      pas créer de fichier url.lst... à toi d'adapter, bien sûr.
      Je suis en python2.6...
      Par contre le module 'process' se trouve sous multiprocessing
      (dans mon environnement \python26\lib\multiprocessing\process.py )
      • Re: MultiThreading ...comment fait on?

        Envoyé par ph_biohazard le 10 Décembre 2008 à 18:49
        Bonjour,

        Merci pour ton aide, je suis en train de regarder, car j'ai modifie beaucoup mon code, donc je vais essaye.

        Je te remercie pour ton aide

    • Re: MultiThreading ...comment fait on?

      Envoyé par encolpe le 8 Décembre 2008 à 23:09
    • Re: MultiThreading ...comment fait on?

      Envoyé par lusirap le 8 Décembre 2008 à 23:42
      Ton script remanié...
      ---------------------------------------------------------------------------
      import re,urllib2
      from cStringIO import StringIO
      out = StringIO()


      from multiprocessing import Process

      def scanURL(address):
      print "Starting scanning",address
      try:
      request = urllib2.Request(address, None, {'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'} )
      urlfile = urllib2.urlopen(request)
      except urllib2.URLError:
      do = 0

      page = urlfile.readlines()
      for detect in page:
      if detect.find('comme service')>=0:
      trouve = address
      print 'Site a jour : ' + address
      detectedsite = open('TROUVE.LOG' , 'a')
      detectedsite.write('\n' + trouve + '\n')
      detectedsite.close()
      if not detect.find('comme service'):
      nontrouve = address
      print "Site non a jour : " + nontrouve
      print "End of scanning",address



      if __name__=='__main__':
      """
      geturl = open('url.lst', 'r')
      url = geturl.readlines()
      """
      url='python.org','yahoo.fr','google.fr'
      for domain in url:
      address = "http://www." + domain
      print 'launching', address
      p = Process(target=scanURL, args=((address),))
      p.start()
    • Re: MultiThreading ...comment fait on?

      Envoyé par lusirap le 8 Décembre 2008 à 23:50
      désolé... oublié de mettre le tag 'code'
      --------------------------------------------------------------------

      import re,urllib2
      from cStringIO import StringIO
      out = StringIO()

      from multiprocessing import Process

      def scanURL(address):
      print "Starting scanning",address
      try:
      request = urllib2.Request(address, None, {'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'} )
      urlfile = urllib2.urlopen(request)
      except urllib2.URLError:
      do = 0

      page = urlfile.readlines()
      for detect in page:
      if detect.find('comme service')>=0:
      trouve = address
      print 'Site a jour : ' + address
      detectedsite = open('TROUVE.LOG' , 'a')
      detectedsite.write('\n' + trouve + '\n')
      detectedsite.close()
      if not detect.find('comme service'):
      nontrouve = address
      print "Site non a jour : " + nontrouve
      print "End of scanning",address



      if __name__=='__main__':
      """
      geturl = open('url.lst', 'r')
      url = geturl.readlines()
      """
      url='python.org','yahoo.fr','google.fr'
      for domain in url:
      address = "http://www." + domain
      print 'launching', address
      p = Process(target=scanURL, args=((address),))
      p.start()


      • Re: MultiThreading ...comment fait on?

        Envoyé par ph_biohazard le 9 Décembre 2008 à 10:52
        Bonjour Lusirap,

        Merci pour ton aide.

        Par contre je n'ai pas compris pourquoi tu mets python.org, yahoo.fr et google.fr, car toutes mes urls sont dans mon fichier url.lst et je ne sollicite pas les sites python, yahoo et google?

        Dois je mettre les 3 premieres urls de mon fichier url.lst pour que cela fonctionne?

        Je te remercie pour ta reponse

        Cordialement
        • Re: MultiThreading ...comment fait on?

          Envoyé par ph_biohazard le 9 Décembre 2008 à 11:01
          Rebonjour,

          Desole, lorsque j'execute ton script, il me met:
          import process
          ImportError: No module named process

          Je suis en python 2.5

          Merci
          • Re: MultiThreading ...comment fait on?

            Envoyé par ph_biohazard le 9 Décembre 2008 à 11:33
            je suis passe en 3.0

            Je teste, merci pour ton aide )
Rendu par Ploneboard