Найти - Пользователи
Полная версия: Загрузка 30% ЦП
Начало » Python для новичков » Загрузка 30% ЦП
1
shiyri
Добрый день, подскажите пожалста.
Написал простой скрипт который мониторит что на 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)
shiyri
поставил
while True: time.sleep(0.02)
и красота пошла
спасибо
Rodegast
> Скрипт занимает 30% ЦП, i3-3220, это нормально?

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

P.S. Создавать GET запрос через веб броузер как то не камельфо.
FishHook
shiyri
это нормально?
А вы попробуйте написать программу с одним пустым циклом, то есть просто бесконечный while, который вообще ничего не делает, только бесконечно крутится и посмотрите на нагрузку процессора. Процессору то пофигу вообще, есть ли здравый смысл в вашей программе или нет. Пустой цикл, это некоторый набор инструкций, например такой
   4           0 SETUP_LOOP              10 (to 13)
     >>    3 LOAD_GLOBAL              0 (True)
              6 POP_JUMP_IF_FALSE       12
который процессор будет крутить до усёру, сколько у него хватит сил. Это как если вы возьмете пустое ведро и начнете его крутить над головой с наивозможной скоростью. Не будете же удивляться, что устали? Чтобы не расходовать процессорное время бессмысленно, подумайте, надо ли вам совершать эти манипуляции ТАК часто, или есть смысл ограничить зачачу по количеству операций в единицу времени
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB