2016-12-19 2 views
2

Cette fonction dort pendant x secondes, y at-il une meilleure fonction de sommeil, peut-être en moins de lignes ou qui utilise moins de mémoire (par exemple pas de ligne 'expand')?Fonction de veille (sommeil pendant x secondes) (Maxima)

En outre, il pourrait être plus précis, bien que pour mes besoins la précision soit suffisante.
EDIT: Mon utilisation principale est pour un court délai, pour voir les images dans la fenêtre principale à mesure qu'elles sont créées.

Je sais que '? \ * Autoconf \ -version \ *;' peut donner le numéro de version de Maxima, donc peut-être il y a une façon non documentée de dormir pendant une période de temps déterminée.

sleep(x) := for i : 1 do 
(
if (i = 1) then (t:elapsed_real_time()), 
if (elapsed_real_time() - t >= x) then return(), 
expand ((a + b)^500) 
)$ 

pour tester la fonction du sommeil:

print(0, timedate())$ 
sleep(1)$ 
print(1, timedate())$ 
sleep(2)$ 
print(2, timedate())$ 
sleep(3)$ 
print(3, timedate())$ 
sleep(4)$ 
print(4, timedate())$ 
sleep(5)$ 
print(5, timedate())$ 

EDIT 2: un code utile (problème initial résolu)

:lisp (sleep 1) 
?sleep(1)$ 
?sleep(1); 
sleep(x) := ?sleep(x); 

EDIT 3: quelques liens utiles

[Lisp et Maxima]
Maxima 5.39.0 Manuel: 37. Flux de programme
http://maxima.sourceforge.net/docs/manual/maxima_37.html

[Comment supprimer la sortie de la fonction Lisp]
Maxima - GPL CAS basé sur DOE-MACSYMA/Listes de diffusion
https://sourceforge.net/p/maxima/mailman/message/33016361/

Répondre

3

Maxima est écrit en Lisp, vous pouvez utiliser un zézaiement commande:

:lisp (sleep 1) 
+0

merci beaucoup, beaucoup apprécié! – vafylec

+0

J'ai trouvé que ': lisp (sleep 1)' fonctionne, bien que si c'est la première chose tapée dans la console, il se bloque avec un message de barre d'état: 'Reading Maxima output', '? Sleep (1) $' n'a pas ce problème – vafylec