# If you look at the today code I reply to tukom (
https://groups.google.com/d/msg/pyqtgraph/nkPWgbHEwdE/dLzwCdFhAQAJ), for a
bit improved 'threaded' code could be:

import numpy as np
import pyqtgraph as pg
import threading

class FuncThread(threading.Thread):
    def __init__(self,t,*a):
        self._t=t
        self._a=a
        threading.Thread.__init__(self)
    def run(self):
        self._t(*self._a)

class MyApp():
    def __init__(self):
        self.number_of_data_steps = 100000
        self.qapp = pg.mkQApp()
        self.win = pg.GraphicsWindow()
        plot1 = self.win.addPlot()
        curve = plot1.plot()
        curve.setPen('r')
        x = np.linspace(0, self.number_of_data_steps,
self.number_of_data_steps)
        self.y = np.linspace(-5, 5, self.number_of_data_steps)

        calculating_thread = FuncThread(self.calculate)
        calculating_thread.start()

        while self.win.isVisible():
            curve.setData(x,self.y)
            self.qapp.processEvents()

    def calculate(self):
        while self.win.isVisible():
            self.y += np.random.random(self.number_of_data_steps) - 0.5

if __name__=='__main__':
    m = MyApp()

On Tue, Feb 28, 2017 at 9:52 PM, <[email protected]> wrote:

> My way is to calculate data in one thread, and everything about pyqtgraph
> (and qt) to process in other one.
>
> On Tue, Feb 28, 2017 at 8:17 PM, Paul Gross <[email protected]> wrote:
>
>> Hi, I am working on displaying real-time telemetry data using pyqtgraph.
>> I am quite pleased with the visual results however I am having issues with
>> the frame rate dropping as more data is plotted. I am receiving about 100
>> data points per second. At the beginning plotting is quite fast but the
>> frame right dives rapidly as more data is being displayed.
>>
>>
>> I have fixed the size of the plots and auto-ranging is disabled, I have
>> tried down sampling and it helps, but not quite enough. I am looking for
>> the fastest way to plot a large amount of data points in real-time, as I
>> receive them.
>>
>>
>> I have found other posts about speed and some of them reference
>> ‘arrayToQPath’, but I am not sure if that is the best way to approach my
>> issue. My biggest concern is with plotting the data points as quickly as
>> possible as to not slow down the rest of the event loop. The current way
>> that I am plotting data in the ‘PlotWidget’ is setting the data of a
>> ‘PlotDataItem’ in the following manner, where the arguments are either a
>> numpy array or python list: 
>> ‘plot_data_item.curve.setData(data['time'][self.x_min:],
>> data[data_type][self.x_min:])’. I have tried plotting a new curve each
>> time, but that seemed to be quite slow.  In an ideal world I would just be
>> able to append points without having to connect all of the previous points
>> to each other.  At some point I want to reset the plot to an empty plot,
>> but that really isn’t an issue because this is a rare occurrence in my
>> program. I simply want to display in real time several minutes of data with
>> multiple different plots, each of fixed size with no scrolling, panning, or
>> auto-resizing.
>>
>> I would not be opposed to threading some of the work out if that is an
>> option on top of any suggestions you have. Something I am not entirely
>> clear on is if the GIL is an issue when it comes to QThreads since they are
>> C++? Will I get any performance boost by using QThreads in the update
>> function? I am reading from a data queue in the update function, so ideally
>> that would be taken out of the loop.  That however isn’t my main concern
>> because if I reset the plots (change the range of data that is taken from
>> my data list/array the frame right jumps right back up).
>>
>>
>> I am using the Dev Branch because my application requires PYQt5 and
>> python 3.5.
>>
>> Any suggestions you have would be greatly appreciated!
>>
>> --
>> 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/ms
>> gid/pyqtgraph/4e08f9bc-4380-4d08-9148-755463f2e976%40googlegroups.com
>> <https://groups.google.com/d/msgid/pyqtgraph/4e08f9bc-4380-4d08-9148-755463f2e976%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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_qyJr_Q_-Y3Gsj784oW-oSOrPnC-9PYL4jcN0juWKiwD1xMg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to