[Novo livro de 2023] Fast Python: técnicas de alto desempenho para grandes conjuntos de dados

84a8d234eb15f839a3f2a3ec9b6741ae.png

来源:专知
本文为书籍介绍,建议阅读5分钟
这本书的目的是帮助你在Python生态系统中编写更高效的应用程序。

230112fb58aa056bd2dd8ae0285a674f.png

O objetivo deste livro é ajudá-lo a escrever aplicativos mais eficientes no ecossistema Python. Por mais eficiente, quero dizer que seu código usará menos ciclos de CPU, menos espaço de armazenamento e menos comunicação de rede. Este livro tem uma abordagem abrangente para questões de desempenho. Não apenas discutimos técnicas de otimização de código em Python puro, mas também consideramos o uso eficiente de bancos de dados amplamente usados, como NumPy e pandas. Como o desempenho do Python é insuficiente em alguns casos, também consideramos o Cython quando precisamos de mais velocidade. Consistente com essa abordagem abrangente, também discutimos o impacto do hardware no design do código: analisamos o impacto das arquiteturas modernas de computadores no desempenho do algoritmo. Também examinamos o efeito da arquitetura de rede na eficiência e exploramos o uso da computação GPU para análise rápida de dados.

Os capítulos deste livro são basicamente independentes e você pode pular para qualquer capítulo que seja importante para você. Dito isto, o livro está dividido em quatro partes. A Parte I, Métodos Fundamentais (Capítulos 1-4), cobre o material introdutório.

■ O Capítulo 1 apresenta esse problema e explica por que devemos nos concentrar na eficiência da computação e do armazenamento. Ele também apresenta a metodologia do livro e oferece sugestões para navegar de acordo com suas necessidades.

■ O Capítulo 2 aborda as otimizações nativas do Python. Também discutimos a otimização de estruturas de dados Python, análise de código, alocação de memória e técnicas de programação preguiçosa.

■ O Capítulo 3 discute simultaneidade e paralelismo em Python e descreve como aproveitar melhor o multiprocessamento e multithreading (incluindo limitações ao usar threads para processamento paralelo). O capítulo também aborda o processamento assíncrono como forma de lidar com eficiência com várias solicitações simultâneas com baixa carga de trabalho, típica de serviços da Web.

■ O Capítulo 4 apresenta o NumPy, uma biblioteca que permite trabalhar eficientemente com arrays multidimensionais. O NumPy está no centro de todas as técnicas modernas de processamento de dados e, como tal, é considerado uma biblioteca fundamental. Este capítulo compartilha técnicas específicas do NumPy para desenvolver código mais eficiente, como exibições, transmissão e programação de array.

A segunda parte, Hardware (Capítulos 5 e 6), concentra-se em como extrair o máximo de eficiência de hardware e redes comumente usados.

■ O Capítulo 5 aborda o Cython, um superconjunto do Python que gera um código muito eficiente. Python é uma linguagem interpretada de alto nível, portanto, não é otimizada para hardware. Várias linguagens, como C ou Rust, são projetadas para serem o mais eficientes possível no nível do hardware. O Cython pertence a esta categoria de linguagens: embora seja muito próximo do Python, ele compila para o código C. Gerar o código Cython mais eficiente requer atenção em como o código é mapeado para uma implementação eficiente. Neste capítulo, aprendemos como criar um código Cython eficiente.

■ O Capítulo 6 discute o impacto das arquiteturas de hardware modernas no projeto de código Python eficiente. Dada a forma como os computadores modernos são projetados, alguns métodos de programação contra-intuitivos podem ser mais eficientes do que o esperado. Por exemplo, em alguns casos, pode ser mais rápido processar dados compactados do que dados não compactados, mesmo que paguemos o custo do algoritmo de descompactação. Este capítulo também aborda o impacto da CPU, memória, armazenamento e rede no projeto de algoritmos em Python. Discutimos o NumExpr, uma biblioteca que pode tornar o código NumPy mais eficiente usando propriedades de arquiteturas de hardware modernas.

A Parte III, Aplicativos e Bibliotecas para Processamento de Dados Moderno (Capítulos 7 e 8), aborda os aplicativos e bibliotecas típicos usados ​​no processamento de dados moderno.

■ O capítulo 7 enfoca como usar pandas, a biblioteca de dataframe usada em Python, da maneira mais eficiente possível. Veremos técnicas relacionadas a pandas para otimizar o código. Ao contrário da maioria dos capítulos deste livro, este se baseia nos capítulos anteriores. pandas é baseado no NumPy, então vamos pegar o que aprendemos no Capítulo 4 e descobrir técnicas relacionadas ao NumPy para otimizar os pandas. Também exploramos como otimizar pandas usando NumExpr e Cython. Por fim, apresento o Arrow, uma biblioteca que pode ser usada para melhorar o desempenho do processamento de dataframes do pandas.

■ O Capítulo 8 estuda a otimização da persistência de dados. Discutimos o Parquet, uma biblioteca que pode lidar eficientemente com dados colunares, e o Zarr, que pode lidar com matrizes de disco muito grandes. Também começamos a discutir como lidar com conjuntos de dados maiores que a memória.

A Parte IV, Tópicos Avançados (Capítulos 9 e 10), trata de duas abordagens finais muito diferentes: usando a GPU e usando a biblioteca Dask.

■ O Capítulo 9 examina como usar unidades de processamento gráfico (GPUs) para processar grandes conjuntos de dados. Veremos que o modelo de computação GPU – usando muitas unidades de processamento simples – é adequado para lidar com problemas modernos de ciência de dados. Usamos dois métodos diferentes para utilizar a GPU. Primeiro, discutiremos as bibliotecas existentes que fornecem uma interface semelhante às bibliotecas que você conhece, como CuPy como uma versão GPU do NumPy. Em segundo lugar, discutiremos como gerar código do Python para executar na GPU.

■ O Capítulo 10 discute o Dask, uma biblioteca que permite escrever código paralelo que pode ser dimensionado para muitas máquinas — seja localmente ou na nuvem — enquanto fornece uma interface familiar semelhante ao NumPy e pandas.

8bbd21b51a1f466582a9f7557cab5ba9.png

3363b00fc8501e7bd849554169924c50.png

a36f5eb325902a450272c3c693881fdc.png

873b7962e5661109924922b7db9f13c8.png

627080e8ccc8c6d69bd0986c38a7db86.png

Acho que você gosta

Origin blog.csdn.net/tMb8Z9Vdm66wH68VX1/article/details/132137832
Recomendado
Clasificación