Rafael do Espirito Santo Postado Maio 9, 2011 Denunciar Share Postado Maio 9, 2011 Olá pessoal!Sou novo em python e tenho em minhas mão a missão de otimizar um programa em python que trata muitas linhas de texto.A princípio, gostaria de saber se existe uma maneira de otimizar as funções que apresento no código abaixo.def branco_dir(texto,tamanho): brancos=tamanho-len(texto) return (texto+(brancos*' '))def zero_esq(texto,tamanho): zeros=tamanho-len(texto) return ((zeros*'0')+texto)texto1 = '14525'texto2 = 'conteudo branco'texto1_modificado = zero_esq(texto1, 20)texto2_modificado = branco_dir(texto2, 50)print texto1_modificadoprint texto2_modificado, " - tamanho: %d" %(len(texto2_modificado))O parâmetro tamanho, presente nas duas funções, pode variar ao longo do programa, assim não posso considerar os valores 20 e 50 como valores fixo (foi só um exemplo de uso da função). Outra restrição que tenho é que o python instalado é a versão 2.5Obrigado pela ajuda! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 9, 2011 Denunciar Share Postado Maio 9, 2011 texto1 = '14525' texto2 = 'conteudo branco' texto1_modificado = '%020d' % int(texto1) texto2_modificado = '%-50s' % texto2 print texto1_modificado print texto2_modificado, " - tamanho: %d" %(len(texto2_modificado)) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael do Espirito Santo Postado Maio 9, 2011 Autor Denunciar Share Postado Maio 9, 2011 (editado) texto1 = '14525' texto2 = 'conteudo branco' texto1_modificado = '%020d' % int(texto1) texto2_modificado = '%-50s' % texto2 print texto1_modificado print texto2_modificado, " - tamanho: %d" %(len(texto2_modificado)) Valeu, Kakao! Como essa função era chamada dentro de um 'for' o ganho foi considerável. Tem um outro ponto que é passível de ser "otimizado", só que estou na dúvida. Tentei comparar as duas funções abaixo: def retorna_conteudo1(texto): if texto == '' or texto.strip() == '': return 'vazio!' else: return 'conteudo!' def retorna_conteudo2(texto): if texto.strip() == '': return 'vazio!' else: return 'conteudo!'Em muitos casos o parâmetro tem conteúdo e vários outros o conteúdo do parâmetro é uma string com vários espaços em branco. Como em muitos casos o parâmetro vai ter algum conteúdo válido, eu já verifico a condição sem ter de fazer o strip() e assim ganhar mais algum tempo. Concordam? Editado Maio 9, 2011 por Rafael do Espirito Santo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael do Espirito Santo Postado Maio 9, 2011 Autor Denunciar Share Postado Maio 9, 2011 texto1 = '14525' texto2 = 'conteudo branco' texto1_modificado = '%020d' % int(texto1) texto2_modificado = '%-50s' % texto2 print texto1_modificado print texto2_modificado, " - tamanho: %d" %(len(texto2_modificado)) Valeu, Kakao! Como essa função era chamada dentro de um 'for' o ganho foi considerável. Tem um outro ponto que é passível de ser "otimizado", só que estou na dúvida. Tentei comparar as duas funções abaixo: def retorna_conteudo1(texto): if texto == '' or texto.strip() == '': return 'vazio!' else: return 'conteudo!' def retorna_conteudo2(texto): if texto.strip() == '': return 'vazio!' else: return 'conteudo!' Em muitos casos o parâmetro tem conteúdo e vários outros o conteúdo do parâmetro é uma string com vários espaços em branco. Como em muitos casos o parâmetro vai ter algum conteúdo válido, eu já verifico a condição sem ter de fazer o strip() e assim ganhar mais algum tempo. Concordam? Eu fiz um teste bobo e parece que não... for i in range(1, 100000): lista_final.append('conteudo') lista_final.append(' ') inicio = datetime.now() for i in lista_final: retorna_conteudo1(i) termino = datetime.now() duracao = termino - inicio print "Rodada 1", duracao inicio = datetime.now() for i in lista_final: retorna_conteudo2(i) termino = datetime.now() duracao = termino - inicio print "Rodada 2", duracaoNesse teste o método que faz o strip de cara foi mais rápido... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rafael do Espirito Santo
Olá pessoal!
Sou novo em python e tenho em minhas mão a missão de otimizar um programa em python que trata muitas linhas de texto.
A princípio, gostaria de saber se existe uma maneira de otimizar as funções que apresento no código abaixo.
def branco_dir(texto,tamanho):
brancos=tamanho-len(texto)
return (texto+(brancos*' '))
def zero_esq(texto,tamanho):
zeros=tamanho-len(texto)
return ((zeros*'0')+texto)
texto1 = '14525'
texto2 = 'conteudo branco'
texto1_modificado = zero_esq(texto1, 20)
texto2_modificado = branco_dir(texto2, 50)
print texto1_modificado
print texto2_modificado, " - tamanho: %d" %(len(texto2_modificado))
O parâmetro tamanho, presente nas duas funções, pode variar ao longo do programa, assim não posso considerar os valores 20 e 50 como valores fixo (foi só um exemplo de uso da função). Outra restrição que tenho é que o python instalado é a versão 2.5
Obrigado pela ajuda!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.