Что нового

[Процессы] [Процессы] Ограничение I\O на свою же программу

Aptemist

Чайник
Сообщения
4
Репутация
0
Здравствуйте, такая проблема: написал прогу, она работает стабильно, но порга нагружает I\O компа и комп(у меня 4 озу) начинает подвисать, что уж там говорить про старые компы, надо сделать ограничение на самого себя, пробовал ставить низкий приоритет на процесс- не помогло; попробовал ограничить саму начинку проги- не стабильно работает. cpu проктически не загружает, колеблется от 0,5% до ~10%, т.е. для одноядерного компа 0,5 -- 10 * 4 = 2 -- 40%. не знаю с чего и начать..
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 547
Репутация
929
В программе есть слипы? Думаю следует начать с них, если я правильно понял про что написано в первом сообщении.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
Воткни в основной цикл Sleep(1) и подвисаний не будет.
 
АТ
A

Aptemist

Чайник
Сообщения
4
Репутация
0
нет, не в этом проблема, она работает исключительно на изменении данных, если данные изменены, то она записывает их в лог, и загружает айопс на 98%, но есть проблма, если программа будет работать постоянно(ну если припрёт долго и тщательно проверить), а юзер включит игру или что-то мешающее работе слежки жза процессом, то она будет нагружать и\о
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
А что означает нагружать I/O? Да и вообще, либо выкладывай код (часть кода), либо опиши проблему на нормальном русском языке. Сейчас я еще больше ничего не понимаю.
 
АТ
A

Aptemist

Чайник
Сообщения
4
Репутация
0
ну если очень грубо представить, то вот так выглядит. это сама суть
Код:
while 1
sleep(15)
wend

$qdir = @desktopdir & "\1.txt"

func _ssed()
; ~ filewrite($qdir)
endfunc
Func read()
if $qLog<>"" then 

$qfile = fileOpen($qdir,1) 
_ssed($qlog)
fileclose($qfile) 
$qlog=-1
EndIf  
endfunc

если слишком быстро изменяются действия, то они должны быстро записываться, и от этого виснет комп
(извиняюсь, пишу спонтанно, если что)
 

AZJIO

AutoIT Гуру
V.I.P
Сообщения
2 748
Репутация
1 145
Aptemist
На каком это языке?
endfund, @desctopdir не существуют в AutoIt3, про отсутствие логики будет следующим вопросом.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 318
Aptemist,
Предупреждение За нарушение правил форума (пункт В.11):[br]
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
(подробнее), а обычный код соответственно в тег [code]
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.
[br][br]С уважением, ваш Глобальный модератор.
 

AZJIO

AutoIT Гуру
V.I.P
Сообщения
2 748
Репутация
1 145
Aptemist
Теоретически скрипт должен остановиться на первых двух строках, войдя в цикл и никогда оттуда не выйдя. Если представить что до цикла что-то есть (хотя телепатов здесь нет), но принимая во внимание то что есть открытие дескриптора файла $qfile и его закрытие, но он не объявлен глобально и функция между _ssed($qlog)не должна его увидеть. Но если предположить что он всё же объявлен глобально, то открываться он должен в той функции в которой используется. "Ну кто так пишет, кто так пишет" говорит отец принца в фильме "Золушка" (2012).
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
Aptemist, понимаешь, никаких ограничений I\O нет. Если у тебя что-то подвисает, то значит код написан неправильно. Выкладывай полностью скрипт, иначе мы не сможем понять проблему.
 
Верх