Co robi, if name == „main”:?
# Przykład wątku
import time, thread
def myfunction(string, sleeptime, lock, *args):
while True:
lock.acquire()
time.sleep(sleeptime)
lock.release()
time.sleep(sleeptime)
if __name__ == "__main__":
lock = thread.allocate_lock()
thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))
thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))
1 odpowiedź
Najprostszym wyjaśnieniem dla zmiennej name (imho) jest:
Utworzenie następujących plików:
# a.py
import b
i
# b.py
print "Witaj świecie z %s!" % __name__
if __name__ == '__main__':
print "Witaj świecie ponownie z %s!" % __name__
Uruchamianie ich da Ci to wyjście:
$ python a.py
Witaj świecie z b!
Jak widać, gdy moduł jest importowany, Python ustawia globals() ['__ name__'] w tym module na nazwę modułu. Ponadto po zaimportowaniu cały kod w module jest uruchamiany. Ponieważ instrukcja if ocenia na False, ta część nie jest wykonywana.
$ python b.py
Witaj świecie z __main__!
Witaj świecie ponownie z __main__!
Jak widać, podczas wykonywania pliku Python ustawia globals() ['__ name__'] w tym pliku na „main”. Tym razem instrukcja if ma wartość True i jest uruchamiana.