Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 11, 2021 10:05:24

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка 30% ЦП

Добрый день, подскажите пожалста.
Написал простой скрипт который мониторит что на serial, если есть туда залетает пропуск, то отправляет GET на добавление нового сотрудника в базу данных. Скрипт занимает 30% ЦП, i3-3220, это нормально?

 #! /usr/bin/python3
#coding: utf-8
import serial
import string
import time
import webbrowser
s = serial.Serial('com15', 9600, bytesize=8, parity='N', stopbits=1, timeout=1)
while True:        
    last = ''
    for byte in s.read(s.inWaiting()): last += chr(byte)
    if (len(last) > 5):
        print (last)
        url = 'http://192.168.2.110/dashboard3/base_new.php?prop='+last
        webbrowser.register('firefox',
            None,
            webbrowser.BackgroundBrowser("C://Program Files//Mozilla Firefox//firefox.exe"))
        webbrowser.get('firefox').open(url)

Офлайн

#2 Янв. 11, 2021 10:25:46

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка 30% ЦП

поставил
while True: time.sleep(0.02)
и красота пошла
спасибо

Офлайн

#3 Янв. 11, 2021 10:26:28

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

Загрузка 30% ЦП

> Скрипт занимает 30% ЦП, i3-3220, это нормально?

Это нормально. Что бы процессор не нагружался можно добавить небольшую задержку через time.sleep в тело первого цикла.

P.S. Создавать GET запрос через веб броузер как то не камельфо.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Янв. 11, 2021 10:42:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Загрузка 30% ЦП

shiyri
это нормально?
А вы попробуйте написать программу с одним пустым циклом, то есть просто бесконечный while, который вообще ничего не делает, только бесконечно крутится и посмотрите на нагрузку процессора. Процессору то пофигу вообще, есть ли здравый смысл в вашей программе или нет. Пустой цикл, это некоторый набор инструкций, например такой
   4           0 SETUP_LOOP              10 (to 13)
     >>    3 LOAD_GLOBAL              0 (True)
              6 POP_JUMP_IF_FALSE       12
который процессор будет крутить до усёру, сколько у него хватит сил. Это как если вы возьмете пустое ведро и начнете его крутить над головой с наивозможной скоростью. Не будете же удивляться, что устали? Чтобы не расходовать процессорное время бессмысленно, подумайте, надо ли вам совершать эти манипуляции ТАК часто, или есть смысл ограничить зачачу по количеству операций в единицу времени



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version