[PyQt] Multithreaded Update of the QStandardItemModel Data
Barry
barry at barrys-emacs.org
Mon Mar 12 22:03:26 GMT 2018
The trick you need is that you can send a signal from a non-main thread to the gui main-thread.
In response to the signal you update the model. Put all the information that you need as the signal arg or args.
I use this idea in scm-workbench to sync the ui to background changes.
Barry
> On 12 Mar 2018, at 21:52, Christian Schulze <c.schulze at tlk-thermo.com> wrote:
>
> Hi Florian,
>
> I need to update many items continuously. Several rows are updated at least once per second. For some use cases I have 20000 rows in total. I prepared all the data (new/modified/removed items), so that hardly any calculation is done in the main thread.
>
> However, the main thead seems to be blocked for too long. The GUI seems to freeze for a short moment when I update the data. This is really annoying when you’re working with the application and I’d like to fix that.
>
> I had expected that I’m allowed to modify the item model, since the GUI thread only reads data. I don’t care if an intermediate state is displayed.
>
> So I need to implement my own threadsafe item model? Is any python based item model implementation threadsafe due to the GIL? Is the interaction of python and C++ fast enough to do this?
>
> Thanks,
> Christian
>
>
> Von: Florian Bruhin [mailto:me at the-compiler.org]
> Gesendet: Montag, 12. März 2018 22:13
> An: Christian Schulze <c.schulze at tlk-thermo.com>
> Cc: pyqt at riverbankcomputing.com
> Betreff: Re: [PyQt] Multithreaded Update of the QStandardItemModel Data
>
> Hi,
>
> On Mon, Mar 12, 2018 at 08:59:11PM +0000, Christian Schulze wrote:
> > I'm trying to update the QStandardItemModel data from another thread. This causes several issues:
> >
> > [...]
>
> QStandardItemModel is part of QtGui, and stuff in QtGui is not
> threadsafe and must be used from the main (GUI) thread only.
>
> > It would be great if someone could tell me how to fix this!
>
> Your only option is pretty much "don't do this". Why do you need to
> modify a QStandardItemModel from a non-main thread?
>
> Florian
>
> --
> https://www.qutebrowser.org | me at the-compiler.org (Mail/XMPP)
> GPG: 916E B0C8 FD55 A072 | https://the-compiler.org/pubkey.asc
> I love long mails! | https://email.is-not-s.ms/
>
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> https://www.riverbankcomputing.com/mailman/listinfo/pyqt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20180312/843fc510/attachment-0001.html>
More information about the PyQt
mailing list