Да Вы можете. Я делаю это пользующийся pythoncom библиотеками, которые приезжают включенные с ActivePython или могут быть установлены с pywin32 (Python для расширений Windows).
Это - основной каркас для простого сервиса:
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "TestService"
_svc_display_name_ = "Test Service"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
socket.setdefaulttimeout(60)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_,''))
self.main()
def main(self):
pass
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(AppServerSvc)
Ваш код входил бы main()
method— обычно с некоторым бесконечным циклом, который мог бы быть прерван путем проверки флага, который Вы устанавливаете в SvcStop
метод
Зависит от того, кого вы спросите - я использую инварианты просто потому, что это облегчает жизнь. Изучение инвариантов похоже на обучение слепой печати. Каждый раз, когда вы используете инвариант, вы знаете больше о своем коде. Если вы вставите инвариант как комментарий в свой цикл, он ОЧЕНЬ поможет читателю. Я бы сказал, что использование инвариантов значительно удешевляет создание и сопровождение исходного кода и дает вам возможность создавать гораздо более сложные алгоритмы, которые все еще можно поддерживать.
И в отличие от ООП, я никогда не видел, чтобы кто-то тратил свое время зря на с использованием инвариантов.
Я не особо думаю об инвариантах - не так много, как до / после условий. Честно говоря, мне, наверное, следует больше думать об инвариантах.
Одна вещь, о которой стоит подумать, - это неизменяемость - если вы используете объектно-ориентированный язык, но делаете типы неизменяемыми там, где это возможно, вам не нужно так сильно беспокоиться об инвариантах : если состояние допустимо для начала, оно останется действительным.
Звучит так, как будто ваш курс может немного переоценивать инварианты ... но это действительно зависит от того, что вы делаете. В одних ситуациях они подходят больше, чем в других. Может быть, ваш лектор просто их большой поклонник с большим опытом в тех областях, где они действительно полезны.