[Python viaje de aprendizaje] --- multi-hilo arrastrándose guiones

. 1  Importación Pide
 2  Importación Time
 3.  Importación de roscado
 4.  Importación de cola
 5.  De lxml importación etree
 6.  # "Https://ishuo.cn/duanzi" 
7.  # Cabecera = { "el Agente User--": "el Mozilla / 5.0 (Windows NT 10,0; Win64; x64-) AppleWebKit / 537.36 (KHTML, como el Gecko) la Chrome / 80.0.3987.87 Safari / 537.36 "} 
. 8  # páginas rastreadas rastreo web hilo --- lista pieza se encuentra, en la cola 
9.  clase Mythread1 (de la threading.Thread ):
 10      DEF  la __init__ (Ser, threaName, pageQueue, DataQueue):
 11.         . De la threading.Thread la __init__ (Self)
 12 es          self.threaName = threaName   # nombre hilo 
13 es          self.pageQueue = pageQueue    # cola página 
14          self.dataQueue DataQueue =    # datos de la cola 
15          self.headers = { " Agente User-- " : " el Mozilla / 5.0 (Windows NT 10,0; Win64; x64-) AppleWebKit / 537.36 (KHTML, como el Gecko) Chrome / 80.0.3987.87 Safari / 537.36 " }
 16  
17.      DEF RUN (Ser):
 18 es          de impresión ( " iniciar el subproceso " , self.threaName)
. 19          al mismo tiempo que  no vlog1:
 20 es              la prueba :
 21 es                  Página = self.pageQueue.get ()
 22 es                  el URL = " https://ishuo.cn/duanzi " 
23 es                  de datos = requests.get (URL, cabeceras = self.headers) .text
 24                  la time.sleep (0.5 )
 25                  self.dataQueue.put (datos)    # datos puestos en la cola de datos 
26 es              el excepto excepción AS E:
 27                  Pass 
28          Imprimir ( " rosca del extremo " , self.threaName)
 29  
30 
31  # Analytical --- hilo página fuera de la lista de colas de página, analiza y almacena el local de 
32  clase Mythread2 (de la threading.Thread):
 33 es      DEF  la __init__ (Self, threaName, DataQueue, nombre de archivo):
 34 es          de la threading.Thread. la __init__ (Self)
 35          self.threaName = threaName
 36          self.dataQueue = DataQueue
 37 [          self.filename = nombre de archivo
 38 es  
39      DEF RUN (Self):
 40          Imprimir ( " iniciar hilo " , self.threaName)
 41 es          el tiempo  No vlog1:
 42 es             el try :
 43 es                  Datal self.dataQueue.get = ()   # cola extrajeron los datos 
44 es                  HTML = etree.HTML (Datal)
 45                  node_list = html.xpath ( ' // div [@ class = "info"] / A ' ) # Obtener página esta página todos los requisitos un sello 
46 es                  # impresión (node_list) 
47                  de nodo en node_list:
 48                      DATOS2 = Node.text   # adquirir información de forma secuencial de una etiqueta 
49                      self.filename.write (DATOS2 + " \ n " ) # información de escribir en el archivo 
50             la excepción Excepción AS E:
 51 es                  Pass 
52 es          de impresión ( " hilo Fin " , self.threaName)
 53 es  
54 es  
55  
56 es  
57 es vlog1 = False   # determina si la cola está vacía página 
58 vlog2 = False   # determina si la cola de datos está vacía 
59  
60  
61 es  DEF main ():
 62 es      # página de la cola 
63 es      pageQueue Queue.Queue = (1. )
 64      pageQueue.put (1. )
 65      # cola de almacenamiento los datos del resultado adquiridas 
66      DataQueue = Queue.Queue ()
 67      # guarda en un archivo
68      filename = Open (& lt R " D: \ Software \ Python \ python_work \ Python_day18 \ 123.txt " , " A " )
 69      # comienzan hilos 
70      T1 = Mythread1 ( " hilo adquisición " , pageQueue, DataQueue)
 71 es      t1.start ( )
 72      T2 = Mythread2 ( " análisis de hilo " , DataQueue, nombre de archivo)
 73 es      t2.start ()
 74      # final del hilo principal 
75      # cuando pageQueue está vacía, el extremo del hilo de adquisición 
76      al mismo tiempo que  no pageQueue.empty ():
 77          Pass 
78      Globalvlog1
 79      vlog1 = Verdadero
 80  
81      # cuando DataQueue está vacía, el fin de analizar el hilo 
82      al mismo tiempo que  no pageQueue.empty ():
 83          Pass 
84      Global vlog2   # definen variables globales 
85      vlog2 = Verdadero
 86  
87      t1.join ()
 88      t2.join ()
 89      filename.close ()   # cuando los dos hilos de ejecución del primer archivo 
90      de impresión ( " fin! " )
 91 es  
92  
93  
94  iF  el __name__ == ' __main__' :
 95      main ()

 

Supongo que te gusta

Origin www.cnblogs.com/chenyuxia/p/12535596.html
Recomendado
Clasificación