Program Python zaczyna działać ponownie po przebudzeniu komputera?

15

Korzystam z programu w języku Python, którego ukończenie zajmuje kilka godzin. Czy po zamknięciu pokrywy laptopa (tj. Po uśpieniu) program uruchomi się ponownie po ponownym otwarciu laptopa? Minęło już kilka godzin i muszę wkrótce wyjść (więc muszę zamknąć laptopa), ale nie chcę ponownie zaczynać procesu. Czy program rozpocznie się dokładnie w tym samym momencie? Jakie jest domyślne zachowanie w Ubuntu 16.04?

Fyi, prowadzę weryfikację krzyżową dla klasyfikatora, który nie korzysta z żadnych zasobów sieciowych - tylko procesor i pamięć RAM.

BourbonCreams
źródło

Odpowiedzi:

29

Prosta odpowiedź brzmi „ tak”, ale prawda jest nieco bardziej skomplikowana.

Tak, aplikacja będzie nadal działać; zostanie wznowione z resztą procesów systemu. Istnieją jednak stanowe rzeczy, takie jak połączenia sieciowe i stany sterownika karty graficznej. Muszą one ponownie zainicjować się przy użyciu zewnętrznego sprzętu, co może oznaczać pewne opóźnienie sieciowe na początku, a nawet prawidłowe rozłączenie-ponowne połączenie (jak to się dzieje w przypadku Ethernetu). W szczególnie złych sytuacjach - zdecydowanie wyjątkach od reguły - całe środowisko pulpitu może ulec awarii i zrestartować się.

Więc nie mogę zagwarantować, co ci się stanie. Jeśli aplikacja ulegnie awarii, jeśli utraci łączność sieciową, może to oznaczać problem. Jeśli wykonuje renderowanie lub CUDA / OpenCL, może się zepsuć.

Jeśli jest to zwykły procesor / dysk, powinno być w porządku.
Ale kto wie na pewno. Komputery robią z nas wszystkich głupców.
Powodzenia.

Oli
źródło
Miałeś rację, mój program uruchomił się ponownie po tym, jak otworzyłem laptopa i ostatecznie zaczął działać zgodnie z oczekiwaniami. OT: Czy od czasu, gdy mi to zajęło (wróciło 23 godziny), myślisz, że odnosi się to do upływającego czasu, czy zwykłej różnicy między czasem zakończenia a czasem rozpoczęcia? A może nie można powiedzieć?
BourbonCreams
Masz na myśli, że uruchomiłeś go z timewbudowanym? np.time ./myscript.py
Oli
Nie, metoda, której używam (cross_validation.cross_val_score) z ustawieniem parametru verbose na True, drukuje się przy końcowej dokładności i czasie działania.
BourbonCreams
„Komputery robią z nas wszystkich głupców”. Tak prawdziwe!
Paddy Landau
6

Po zawieszeniu systemu (przełączeniu go w tryb uśpienia) przechowuje on wszystkie rejestry procesora itp., Które reprezentują to, co obecnie robi w pamięci RAM, a następnie wyłącza większość komponentów oprócz tych, które zachowują zawartość pamięci RAM i tych, które są potrzebne do obudzenia komputera ponownie później (urządzenia wejściowe itp.).

Gdy obudzisz go później ponownie, poprzedni stan zostanie przywrócony, a komputer będzie kontynuował dokładnie w punkcie, w którym go zawiesiłeś.

To jest główna koncepcja, oczywiście w rzeczywistości dzieje się więcej, ponieważ to wszystko nie dzieje się magicznie, gdy ścinasz palce. W grę wchodzi wiele skryptów systemowych itp., Które uruchamiają się przed zawieszeniem i po przebudzeniu.

Jednakże, chyba że ręcznie skonfigurujesz coś w tym celu, zawieszenie komputera nigdy nie zamknie uruchomionych aplikacji. Istnieje niewielkie ryzyko, że coś się zawiesi, ale normalnie, jeśli zadziałało to raz, zawsze działa.

Bajt Dowódca
źródło
2

Jeśli laptop idzie spać (= wstrzymaj), zdecydowanie tak. Jedyne, co można zakłócić, to połączenia sieciowe lub podobne rzeczy w czasie rzeczywistym; w takim przypadku zależy to od tego, czy działający program jest bezpiecznie napisany, aby zaakceptować tymczasowe awarie i odzyskać.

Jeśli laptop się wyłączy , zdecydowanie nie --- myślę, że gdzieś w Panelu sterowania jest opcja wyboru pomiędzy tymi dwoma zachowaniami.

Rmano
źródło
2

Jeśli chcesz się upewnić, możesz wybrać komputer, który nie robi nic więcej, gdy pokrywa jest zamknięta, z opcji zasilania w panelu sterowania. Oznacza to, że zamknięcie lub otwarcie pokrywy nie będzie miało wpływu na stan komputera. W ten sposób gwarantuje się, że każdy program będzie działał nieprzerwanie.

atakanyenel
źródło
2
Ale w laptopie może zabraknąć baterii.
cat