Python 및 Pyqtgraph에서 서로 다른 그래프에 여러 데이터 스트림을 그리는 모범 사례

앨빈 C

저는 8 개의 센서 파형을 받아들이는 PyQt에서 애플리케이션을 작성 중이며 8 개의 데이터를 스트리밍하는 하나의 창에 8 개의 QGraphicView가 있습니다. 하나의 센서 만 사용하면 모든 것이 잘 작동합니다. 그러나 8 개의 실시간 스트림을 모두 사용하면 플로팅이 느려지고 충돌합니다.

성능 시간을 줄이기 위해 동시에 많은 실시간 스트림을 플로팅 할 때 가장 좋은 방법은 무엇이며 무엇을 알고 있어야합니까? 멀티 스레딩이 도움이 될까요? 더 느린 프레임 속도로 플로팅?

알렉산더 후자 흐

작업이 CPU 바운드이고 여전히 하나의 코어 (기본적으로 Python의 경우)에서 실행 중이므로 다중 스레딩은 거의 사용되지 않습니다. 또한 PyQtGraph는 여러 스레드에서 플로팅을 수행 할 수 없습니다. 모든 것은 메인 스레드에서 수행되어야합니다 ( 여기 에서 유사한 주제에 대한 작성자의 응답 참조 ). 따라서 멀티 스레딩 또는 멀티 프로세싱이 데이터를 가져 오거나 처리하는 데 도움이 될 수 있지만, 너무 빠른 속도로 너무 작은 공간에 너무 많은 데이터를 플로팅하는 주요 병목 현상을 해결하지는 못합니다.

해결책? 다운 샘플링. 편리하게도 PyQtGraph에는이 내장 . 다음은 예제입니다 (PyQtGraph 예제 제품군에서 수정 됨).

import numpy as np
import pyqtgraph as pg
from PySide import QtGui, QtCore

win = pg.GraphicsWindow(title="Basic plotting examples")
win.resize(1000,600)
win.setWindowTitle('pyqtgraph example: Plotting')

# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)

p1 = win.addPlot(title="Downsampled")
# normally would plot 1000, but we downsample by 10 fold
p1.plot(np.random.normal(size=1000), pen=(255,0,0), name="Red curve", downsample=10)

p2 = win.addPlot(title="Normal")
p2.plot(np.random.normal(size=1000), pen=(0,0,255), name="Blue curve",)


## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
    QtGui.QApplication.instance().exec_()

그 결과 왼쪽에 10 배 적은 포인트가있어 훨씬 더 높은 성능을 제공합니다.

왼쪽, 다운 샘플, 오른쪽, 일반

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

컨트롤러에서 다른 컨트롤러로 목록 데이터를 전송하는 모범 사례

분류에서Dev

컨트롤러에서 다른 비 하위 또는 상위 컨트롤러로 데이터를 전달하는 모범 사례?

분류에서Dev

ggplot2를 사용하여 R에서 범례 제목과 키 순서 및 색상을 다중 스택 막대 그래프로 변경하는 방법

분류에서Dev

C #을 사용하여 프로그래밍 방식으로 SharePoint 사이트에서 모든 그림 라이브러리 목록을 가져 오는 방법

분류에서Dev

Mathplotlib에서 다른 색상 레이블로 데이터 세트의 범례를 그리는 방법

분류에서Dev

다른 시스템에서 데이터를 가져올 때 ID를 선택하는 모범 사례

분류에서Dev

다른 클래스에서 목록 액세스 또는 복사? -성능 및 모범 사례

분류에서Dev

하나의 그래프에 서로 다른 x 및 y 값으로 여러 데이터 세트를 플로팅하려면 어떻게합니까?

분류에서Dev

여러 다른 레이아웃에 걸쳐있는 모듈 양식을 만드는 모범 사례

분류에서Dev

여러 다른 레이아웃에 걸쳐있는 모듈 양식을 만드는 모범 사례

분류에서Dev

ggvis-그래프 내부에 여러 데이터 및 위치 범례가있는 add_legend

분류에서Dev

Python을 사용하여 하나의 데이터 프레임 내에서 여러 그룹화 및 집계

분류에서Dev

MATLAB : 하나의 그래프에 여러 선을 다른 색과 범례로 플로팅합니다.

분류에서Dev

서로 다른 라이브러리를 사용하여 Android 및 JVM에서 동일한 프로그램 실행

분류에서Dev

AngularJS 서비스를 사용하여 다른 모듈에서 다른 컨트롤러의 범위 업데이트

분류에서Dev

HTML 태그에서 동적 API 값을 업데이트하는 모범 사례

분류에서Dev

Windows에서 WSL2 및 VcXsrv를 사용하여 다중 모니터로 그래픽 응용 프로그램을 시작하는 효율적인 방법

분류에서Dev

데이터 프레임의 다른 열을 사용하여 하나의 플롯에 여러 그래프를 그리는 방법은 무엇입니까?

분류에서Dev

Swift 앱에서 로컬 JSON 데이터 파일을 업데이트하는 모범 사례?

분류에서Dev

클라이언트 애플리케이션의 로컬 스토리지 관리 및 데이터 지속성에 대한 모범 사례는 무엇입니까?

분류에서Dev

Python Matplotlib 동일한 그림에서 여러 그래프를 그리는 방법

분류에서Dev

여러 변수를 사용하여 ggplot에서 범례의 텍스트 및 제목을 변경하는 방법

분류에서Dev

스트리밍 데이터 흐름에서 Bigtable에 액세스하는 모범 사례는 무엇입니까?

분류에서Dev

iOS에서 다른 API를 사용하여 디버그 모드 및 릴리스 모드에서 애플리케이션을 실행하는 방법

분류에서Dev

Python 스크립트 (또는 다른 프로그래밍 언어 스크립트)를 사용하여 다른 애플리케이션에서 사용하는 리소스 (예 : RAM, CPU 사용량)를 제한 할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 GUI 설계-중첩 된 레이아웃 및 다중 위젯 (Qt)에 대한 모범 사례

분류에서Dev

SVN 태그에서 Maven 프로젝트 종속성을 관리하는 모범 사례는 무엇입니까?

분류에서Dev

AngularJS : 경로 및 컨트롤러에 대한 모범 사례

분류에서Dev

여러 정점에 대해 그래프 데이터베이스에서 가능한 모든 경로 계산

Related 관련 기사

  1. 1

    컨트롤러에서 다른 컨트롤러로 목록 데이터를 전송하는 모범 사례

  2. 2

    컨트롤러에서 다른 비 하위 또는 상위 컨트롤러로 데이터를 전달하는 모범 사례?

  3. 3

    ggplot2를 사용하여 R에서 범례 제목과 키 순서 및 색상을 다중 스택 막대 그래프로 변경하는 방법

  4. 4

    C #을 사용하여 프로그래밍 방식으로 SharePoint 사이트에서 모든 그림 라이브러리 목록을 가져 오는 방법

  5. 5

    Mathplotlib에서 다른 색상 레이블로 데이터 세트의 범례를 그리는 방법

  6. 6

    다른 시스템에서 데이터를 가져올 때 ID를 선택하는 모범 사례

  7. 7

    다른 클래스에서 목록 액세스 또는 복사? -성능 및 모범 사례

  8. 8

    하나의 그래프에 서로 다른 x 및 y 값으로 여러 데이터 세트를 플로팅하려면 어떻게합니까?

  9. 9

    여러 다른 레이아웃에 걸쳐있는 모듈 양식을 만드는 모범 사례

  10. 10

    여러 다른 레이아웃에 걸쳐있는 모듈 양식을 만드는 모범 사례

  11. 11

    ggvis-그래프 내부에 여러 데이터 및 위치 범례가있는 add_legend

  12. 12

    Python을 사용하여 하나의 데이터 프레임 내에서 여러 그룹화 및 집계

  13. 13

    MATLAB : 하나의 그래프에 여러 선을 다른 색과 범례로 플로팅합니다.

  14. 14

    서로 다른 라이브러리를 사용하여 Android 및 JVM에서 동일한 프로그램 실행

  15. 15

    AngularJS 서비스를 사용하여 다른 모듈에서 다른 컨트롤러의 범위 업데이트

  16. 16

    HTML 태그에서 동적 API 값을 업데이트하는 모범 사례

  17. 17

    Windows에서 WSL2 및 VcXsrv를 사용하여 다중 모니터로 그래픽 응용 프로그램을 시작하는 효율적인 방법

  18. 18

    데이터 프레임의 다른 열을 사용하여 하나의 플롯에 여러 그래프를 그리는 방법은 무엇입니까?

  19. 19

    Swift 앱에서 로컬 JSON 데이터 파일을 업데이트하는 모범 사례?

  20. 20

    클라이언트 애플리케이션의 로컬 스토리지 관리 및 데이터 지속성에 대한 모범 사례는 무엇입니까?

  21. 21

    Python Matplotlib 동일한 그림에서 여러 그래프를 그리는 방법

  22. 22

    여러 변수를 사용하여 ggplot에서 범례의 텍스트 및 제목을 변경하는 방법

  23. 23

    스트리밍 데이터 흐름에서 Bigtable에 액세스하는 모범 사례는 무엇입니까?

  24. 24

    iOS에서 다른 API를 사용하여 디버그 모드 및 릴리스 모드에서 애플리케이션을 실행하는 방법

  25. 25

    Python 스크립트 (또는 다른 프로그래밍 언어 스크립트)를 사용하여 다른 애플리케이션에서 사용하는 리소스 (예 : RAM, CPU 사용량)를 제한 할 수 있습니까?

  26. 26

    프로그래밍 방식으로 GUI 설계-중첩 된 레이아웃 및 다중 위젯 (Qt)에 대한 모범 사례

  27. 27

    SVN 태그에서 Maven 프로젝트 종속성을 관리하는 모범 사례는 무엇입니까?

  28. 28

    AngularJS : 경로 및 컨트롤러에 대한 모범 사례

  29. 29

    여러 정점에 대해 그래프 데이터베이스에서 가능한 모든 경로 계산

뜨겁다태그

보관