2012-12-27 2 views
1

J'ai un code qui fonctionne 24/7. Et, je me demande s'il y a une méthodologie que je pourrais utiliser pour me permettre d'apporter des modifications aux variables en temps réel sans invoquer d'erreur? Avait utilisé raw_input() mais cela 'arrête' le programme car il s'exécute séquentiellement.Est-il possible de mettre à jour une liste de liste en temps réel pendant l'exécution d'un programme?

Mon idée est d'utiliser un certain temps vraie boucle:

while true: 
    ... 
    ... 

et pour les premières boucles, il utilisera les prises par défaut toutes les valeurs que j'ai pré-programmées dans le système. En cours d'exécution, je vais apporter des modifications à certains termes constants (qui servent de contrôle) en temps réel. Ainsi, dans la boucle suivante et au-delà, il utilisera les nouvelles valeurs plutôt que la version préprogrammée.

Répondre

1

Une partie de votre code ou les détails de ce que vous essayez de faire aideraient.

Mais une façon de le faire est d'avoir deux processus, un processus qui lit standard in avec raw_input(), nous pouvons l'appeler p1; et celui qui gère la structure de données, dans ce cas la liste, nous l'appelons p2.

Les deux processus peuvent communiquer avec le passage de message en utilisant des sockets ou ce que vous voulez.

Alors pour être sûr d'éviter les conditions de course que de nouvelles données sont lues dans p1, mais pas encore mis à jour dans p2. Ainsi, p2 continuera et utilisera les données obsolètes. Une façon de le faire est d'utiliser des verrous.

+0

merci pour la suggestion. Je fais une expérience qui nécessite que le programme s'exécute 24/7 tout en optimisant le résultat. La façon dont je l'optimise est via mes variables de contrôle. Pour le moment, je dois arrêter le programme, changer les valeurs manuellement et redémarrer le programme. Donc, j'explore des options pour voir ce que je peux éventuellement faire pour faire l'idée de mettre à jour en temps réel. Hmm ... J'ai entendu parler de processus mais pas de verrous avant. Certainement aller lire à ce sujet. Merci! –

Questions connexes