Jump to content
simbamix

Temporizador em python

Recommended Posts

simbamix

Boa tarde,

Estou aqui com um problema no meu script.

Queria executar uma parte do codigo uma certa parte de segundos, o que já está a funcionar.

Eu queria introduzir esses segundos através do segundo argumento, ou seja python teste.py 1arg 50

Estou a utilizar o seguinte codigo para adicionar o tempo: t_end = time.time() + 20

Mas como faço para transformar isso para ele obter pelo argumento? Exemplo:t_end = time.time() + sys.argv[2], ele dá erro

Obrigado :)

Share this post


Link to post
Share on other sites
M6

Que erro é que dá?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
M6

Se leres o erro com atenção está ai tudo bem explicado: o operador + não consegue somar um float com uma string...

Tens de converter a string para um numérico.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
simbamix

Muito obrigado, consegui pela tranformação: tempoo = int(sys.argv[2])

Agora outra duvida:

 

Estou num while e quando esse while acaba, que está verdadeira, vai para um else: que quando a "afirmação" está falsa.

 

Eu queria parar o programa, ou seja matar o programa, porem ja tentei dentro do else usar o exit, quit, etc... Sem resultado.

 

Como posso sair do programa? 

Obrigado :)

Share this post


Link to post
Share on other sites
M6

Usas o sys.exit(0). Podes é ter um erro de lógica.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Bernardo Vieira

Não entendi o que disseste acima mas, não tens forma de sair do programa sem forçar um "exit" ?

Share this post


Link to post
Share on other sites
simbamix

O script python vai ser executado pelo php, e sendo que ele terá de fechar sozinho, ou consumirá mais recursos... penso eu

Share this post


Link to post
Share on other sites
Bernardo Vieira

Sim, eu percebo que fecha sozinho e percebo também a preocupação com os recursos (é importante) mas existe possibilidade de fechar logo a seguir a esse "if:else" ou ainda existe muito código pela frente ? No caso de isso ser tio uma classe que está a iniciar conexão á base de dados ou assim, será necessário esse "exit", mas se o programa fechar poucas linhas, então não é necessário.

Share this post


Link to post
Share on other sites
simbamix

Essa parte do código está numa classe, e há muito código pela frente 

Já tentei muitas coisas mas o programa não quer fechar :/

Share this post


Link to post
Share on other sites
Bernardo Vieira

Então estás a fazer um bom uso (só perguntei porque por vezes, algumas pessoas usam de forma incorreta)

E já tentaste executar só o código python ? Se recebe variáveis, enviar para lá uns valores aleatórios, que funcionem.
PS. não sei exatamente como funciona, mas não terás de retornar uma variável para php ? Talvez por tentares fechar assim é que não funciona. Não sei :/ Provavelmente o código python pára mas o php não sabe o que fazer!

Share this post


Link to post
Share on other sites
M6

Não sei se percebi bem.
Quando executas o código através de linha de comando ele fecha?
 


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
simbamix

Quando executo o código ele fica aberto e não fecha, ficando com a ultima mensagem dada no ecrã 

Share this post


Link to post
Share on other sites
M6

Eu diria que tens um erro de lógica nesse código ou então o programa está à espera de algo externo (e.g. ligação http).

Coloca uns prints com os valores da variáreis para verificar se efetivamente estás a obter os valores que estavas à espera. Pode estar a dar-se o caso de que o código nunca chega ao exit().


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
simbamix

Ou seja, ele chega a esta parte do código, e faz um temporizador: 

tempoo = int(sys.argv[2])
t_end = time.time() + tempoo

Depois, vai para uma classe, que está a dizer: while time.time() < t_end:

quando o tempo acabar ele vai para o else:

 sys.exit(0)

Estarei a fazer algo de errado? O while usa-se com o else? 

Share this post


Link to post
Share on other sites
M6

Ah, está desvendado o mistério. O While não tem Else, isso é do If.

O While é um ciclo que executa o código interno do mesmo enquanto a condição é verdadeira. Quando a condição é falsa, sai do ciclo.
Vê aqui: https://wiki.python.org/moin/WhileLoop


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Nilo Menezes

Em Python você pode escrever:

while a < 10:
     print(a)
     a+=1
else:
     print("nao")

 

Você também pode ter else em um for, mas o funcionamento é um pouco diferente.

O else do while é executado quando a condição for falsa.

No caso do for, o else só é executado caso a repetição seja vazia.

 

Quanto aos temporizadores, se você não precisa de muita precisão, time.time() + intervalo resolve, mas se precisar por exemplo chamar uma função cada x segundos, melhor usar o Timer do módulo threading ou o sched: https://docs.python.org/3/library/sched.html

Edited by thoga31
Caixa de código
  • Vote 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.