Je suis en cours d'exécution le code suivant:Time.sleep semble bloquer le thread principal, pas seulement le fil de l'enfant?
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()
L'attente est le fil conducteur quitte immédiatement, parce que je ne l'appelle pas se joindre. Mais ce n'est pas le cas. Les appels de sommeil bloquent-ils aussi le thread principal?
EDIT: Il y a une question similaire posée dans ce fil: time.sleep -- sleeps thread or process? mais ce n'est pas la même chose.
J'ai regardé le fil: il dit que le sommeil ne bloque pas les processus fils, mais il ne dit pas ce qu'il advient du fil principal. Lorsque j'ai exécuté le code à partir de la réponse acceptée, le thread principal n'est pas sorti immédiatement, comme je le pensais.
MISE À JOUR: On dirait que multithreading ne résoudra pas mon problème: le but est d'exécuter un tas de tâches en arrière-plan. J'utilise le module de sous-processus à la place maintenant.
Copie possible de [time.sleep - dort thread ou processus?] (Https://stackoverflow.com/questions/92928/time-sleep-sleeps-thread-or-process) –
J'ai regardé le fil: il dit que le sommeil ne provoque pas de blocage des processus enfants, mais il ne dit pas ce qu'il advient du thread principal. Lorsque j'ai exécuté le code à partir de la réponse acceptée, le thread principal n'est pas sorti immédiatement, comme je le pensais. –
Faites-vous 'curr_thread.join()'? Le thread principal devrait quitter immédiatement. Rejoindre le thread attendra jusqu'à ce que le thread est terminé avant de quitter. –