So I have an app that downloads files from an ftp server and it does so in a process pool to save time cuz there can be a lot of files at times. And I'd like to show the progress of what files are being downloaded by displaying a message in a QLabel on the GUI. For now what I came up with looks like this : First module : shared_queue = multiprocessing.Queue() class MyProcess: def foo(self, nb): pid = os.getpid() output = f"Process id = {pid}\nReceived nb = {nb}" shared_queue.put(output) print(output) def do_stuff(self): pool_size = 8 p = Pool(pool_size) p.map(self.foo, range(pool_size)) I replaced the ftp download function by a smaller print one but I get the exact same problem with both. And here's my main module: from other_module import MyProcess, shared_queue class MyThread(QThread): my_sig = Signal(str) def run(self): while True: text = shared_queue.get(block=True) self.my_sig.emit(text) class Window(QWidget): def __init__(self): # setting up a # window with a label # and a button self.thread = MyThread() self.thread.my_sig.connect(self.update_label) self.thread.start self.button.clicked.connect(self.button_handler) def update_label(self, text): self.label.setText(text) print(text) self.label.update() QApplication.processEvents() def button_handler(self): bar = MyProcess bar.do_stuff() My problem is: when I do that, the label only gets updated after do_stuff() finishes. The messages are put in the queue but they're only fetched in one go once the function ends. But what I'd want is showing the message on the GUI as soon as it's emitted. Does anyone know how I could do that ? This is my first post here so if I made anything bad please tell me Continue reading...