Resolvió el problema con la clase trabajadora Qthread. https://realpython.com/python-pyqt-qthread/ Me ayudo mucho.

Tengo un bucle para leer y abrir datos desde el directorio, pero cuando ejecuto el código, Python no responde. Puedo ver que los archivos se abren en la terminal, pero Python no responde. Creo que se trata de un bucle infinito, pero no sé cómo romperlo. (también probé "for loop")

Notas:

  1. self.fileindex mantiene el orden del archivo seleccionado en el directorio de la memoria.
  2. self.Vfilelist.value mantiene los nombres de los archivos en el directorio en la memoria como una lista.
  3. self.Vradar.change cambia la trama en el lienzo.
  4. Las líneas start_stream se asignan a un botón con Qt.
    def start_stream(self):
        filelist = self.Vfilelist.value
        f = (len(filelist) - 10)

        while (f < (len(filelist))):

            self.filename = self.Vfilelist.value[f]
            f = f + 1
            print(f)
            time.sleep(1)

            while (self.filename in self.Vfilelist.value):
                
                print("Opening file " + self.filename, file=log.info)
                filename = self.filename
                radar = pyart.io.read(filename)
                # Add the filename for Display
                radar.filename = filename
                self.Vradar.change(radar)
                break

            if f == (len(filelist)):
                f = (len(filelist) - 10)

Salida:

Opening file C:/Users/PC/product_raw\IZM201225092922.KATX8C4

807

Opening file C:/Users/PC/product_raw\IZM201225092943.KATX8C5

808

Opening file C:/Users/PC/product_raw\IZM201225093004.KATX8C6

809

Opening file C:/Users/PC/product_raw\IZM201225093025.KATX8C7

810

Opening file C:/Users/PC/product_raw\IZM201225093048.KATX8C9

811

Opening file C:/Users/PC/product_raw\IZM201225093107.KATX8CA

812

Opening file C:/Users/PC/product_raw\IZM201225093128.KATX8CB

813

Opening file C:/Users/PC/product_raw\IZM201225093149.KATX8CC

814

Opening file C:/Users/PC/product_raw\IZM201225093210.KATX8CD

815

Opening file C:/Users/PC/product_raw\IZM201225093232.KATX8CE

816

Opening file C:/Users/PC/product_raw\IZM201225092922.KATX8C4

807

Opening file C:/Users/PC/product_raw\IZM201225092943.KATX8C5

808

Opening file C:/Users/PC/product_raw\IZM201225093004.KATX8C6

.

.

.
-1
malicelik 20 ene. 2021 a las 08:43

1 respuesta

La mejor respuesta

Sin código ejecutable, supongo que realmente quieres hacer esto:

def start_stream(self):
    filelist = self.Vfilelist.value
    files_wanted = filelist[-10:]
    
    for filename in files_wanted:
        print("Opening file " + self.filename, file=log.info)
        radar = pyart.io.read(filename)
        # Add the filename for Display
        radar.filename = filename
        self.Vradar.change(radar)

No necesariamente solucionará ningún problema de subprocesos, pero ayuda a aclarar lo que está tratando de hacer.

0
Paul Whipp 21 ene. 2021 a las 02:04