Envisagez le programme de ligne de commande Python suivant. Il ne fonctionne pas parce qu'elle est incomplète, mais je pense qu'il illustre le problème:Comment un programme Python peut-il se fonder lui-même?
#!/usr/bin/python3
import multiprocessing
pool = multiprocessing.Pool()
for task in expensive_iterator_with_user_interaction():
pool.call_async(expensive_computation, (task,))
pool.close()
print("Dear user, you may now press Ctrl-Z and bg this script.")
pool.join()
Ainsi, le problème est que ce script a besoin entrée utilisateur alors qu'il est le lancement des processus coûteux en parallèle. Mais il y a aussi le moment où l'interaction de l'utilisateur n'est plus nécessaire. Ensuite, je demande à l'utilisateur de mettre en contexte ce processus avec des actions de shell.
Cependant, est-ce que cela peut également être réalisé par le programme lui-même?
(Note: Le cœur du problème est l'enchevêtrement de l'entrée de l'utilisateur avec le tir des « calculs coûteux » Par conséquent, je ne peux pas séparer les deux dans deux scripts, et en laissant une fraie l'autre comme un démon..)
cochez cette fonction https://docs.python.org/3/library/os.html#os.fork –
Cela fonctionne-t-il également dans un script multiprocesseur? Qu'en est-il des fichiers ouverts et des canaux ouverts aux sous-processus? –
Je ne sais pas si c'est le cas, mais devrait fonctionner à mon avis –