I just want to add that the real advantage of QThreads (when talking about pyqtgraph) is that you can do CPU-heavy processing in a non-GUI thread, so the GUI doesn't (temporarily) freeze/lag as number crunching is happening. I use a QThread to do some log-based calculations here, and I use the Signal/Slot mechanism to relay the information I want pyqtgraph to plot:
https://github.com/j9ac9k/barney/blob/main/src/barney/controllers/SubPlotControllers/SpectrogramController.py The calculation is based on an interactive element in the GUI, so when I first had this setup, when the user would adjust a linear region item, the GUI would temporarily freeze while I was doing a log calculation on a ~500x2000 numpy array. Moving to a QThread meant the resulting plot was a little late to update vs. the others, but the GUI didn't lag or freeze. Adding QThreads does add complexity, and I hope to roll an example in the pyqtgraph example library on how to do this; but the general advice is don't go down that route unless you have an actual need. On Thu, Oct 13, 2022 at 5:27 AM Edmondo Giovannozzi < [email protected]> wrote: > Personally I want speed in a GUI application. So I always use pyqtgraph, > even sometime modifying the pyqtgraph source in order to have what I need. > It is well written, so modifying it is easy. > If a calculation is slowing me down I can transform it in a Fortran or C > code and use ctypes to link it to Python. > > Il Mer 12 Ott 2022, 23:36 Martin Chase <[email protected]> ha > scritto: > >> Heya, >> >> There isn't any performance difference between QThreads and python >> Threads; that's mostly a difference of how you want to integrate with Qt >> (QThreads fit into the rest of the Qt lifecycle better). Otherwise, the >> question that I ask to determine thread v. multiprocess is: will my worker >> mostly be sitting around waiting? If that's the case (e.g. waiting on i/o), >> then using a thread is great. Otherwise, if the worker needs to do a bunch >> of heavy work before the data is ready to display (e.g. it's the output of >> a difficult analysis), put that work on a different core. >> >> Only matplotlib is as good at plotting as matplotlib; it's the best >> python plotting library. If that's your minimum bar, I agree that you'll be >> writing everything yourself from scratch. PyQtGraph is built for >> performance, though, so you're going to need the best of both libraries if >> that's your use-case. >> >> Good luck, >> - Martin >> >> -- >> You received this message because you are subscribed to the Google Groups >> "pyqtgraph" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/pyqtgraph/CAD_p8v3668bj82zYmWi%2Bns_DfHK4JHAbwvb8oSmitU-RkArFpA%40mail.gmail.com >> <https://groups.google.com/d/msgid/pyqtgraph/CAD_p8v3668bj82zYmWi%2Bns_DfHK4JHAbwvb8oSmitU-RkArFpA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "pyqtgraph" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pyqtgraph/CACwj3kUb7toyty5sAE4vP6mV3YsRxQ%2BjGMxRh-hecLFvy9w2DA%40mail.gmail.com > <https://groups.google.com/d/msgid/pyqtgraph/CACwj3kUb7toyty5sAE4vP6mV3YsRxQ%2BjGMxRh-hecLFvy9w2DA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "pyqtgraph" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pyqtgraph/CA%2BnduTFi5wBSuqB9_g43HC_yYhwVSunEf7qz4Km4fjUMLnLbXw%40mail.gmail.com.
