Ich bin mit dem folgenden Code:Time.sleep scheint Haupt Thread zu blockieren, nicht nur Kind Thread?
from threading import Thread
from time import sleep
def file_write(file_input, num_lines):
sleep(10)
file = open("testfile.txt", "w")
for line in num_lines:
file.write("{}: {}".format(line, file_input))
file.close()
if __name__ == '__main__':
curr_thread = Thread(target=file_write, args=("Norah", range(5)))
curr_thread.daemon = False
curr_thread.start()
Die Erwartung ist der Haupt-Thread sofort verlassen wird, weil ich nicht beitreten nennen. Aber das tut es nicht. Blockieren Schlafanrufe den Hauptthread?
EDIT: Es gibt eine ähnliche Frage in diesem Thread gestellt: time.sleep -- sleeps thread or process?, aber es ist nicht das Gleiche.
Ich schaute auf den Thread: es sagt, dass Schlaf keine untergeordneten Prozesse gegenseitig blockieren, aber es sagt nicht, was mit dem Hauptthread passiert. Wenn ich den Code von der angenommenen Antwort aus ausführte, wurde der Haupt-Thread nicht sofort beendet, wie ich dachte.
UPDATE: Sieht aus wie Multithreading wird mein Problem nicht lösen: das Ziel ist es, eine Reihe von Aufgaben im Hintergrund auszuführen. Ich benutze jetzt das Unterprozessmodul.
Mögliches Duplikat von [time.sleep - schläft Thread oder Prozess?] (Https://stackoverflow.com/questions/92928/time-sleep-sleeps-thread-or-process) –
Ich schaute auf den Thread: Es besagt, dass der Schlaf nicht dazu führt, dass untergeordnete Prozesse sich gegenseitig blockieren, aber er sagt nicht, was mit dem Hauptthread passiert. Wenn ich den Code von der angenommenen Antwort aus ausführte, wurde der Haupt-Thread nicht sofort beendet, wie ich dachte. –
Machst du 'curr_thread.join()'? Der Haupt-Thread sollte sofort beendet werden. Das Beitreten des Threads wartet, bis der Thread fertig ist, bevor er beendet wird. –