5 파이썬 라이브러리 나는 더 빨리 찾을 수 있으면 좋겠다

5 파이썬 라이브러리 나는 더 빨리 찾을 수 있으면 좋겠다

지난 달, 나는 실행하는 데 4 시간이 걸리는 특히 불쾌한 데이터 처리 스크립트를 디버깅하고있었습니다. 네. 시간. 이 목록에서 하나의 라이브러리를 발견 한 후 12 분으로 내려갔습니다.

그 순간, 나는 이미 PYPI에 앉아 완벽하게 좋은 솔루션을 가지고있는 바퀴를 재창조하는 몇 달을 깨달았습니다. 그래서 여기에 5 개의 파이썬 라이브러리가 있습니다.

1. Rich- 인쇄문이 빨라질 필요가 없기 때문에

그것이하는 일 : 터미널 출력을 못생긴 텍스트에서 아름다운 형식의 디스플레이로 바꿉니다.

가장 오랫동안 모든 것을 디버깅 한 개발자였습니다. print() 진술. 터미널은 텍스트의 혼란스러운 혼란처럼 보였고 문제를 추적하는 것은 건초 더미에서 바늘을 찾는 것과 같습니다.

그런 다음 부자를 발견했습니다.

from rich.console import Console 
from rich.table import Table
console = Console()
Instead of ugly print statements
console.print("Hello", style="bold red") console.print("Processing data...", style="green")
Beautiful tables instead of messy lists
table = Table(title="User Data") table.add_column("Name", style="cyan") table.add_column("Status", style="magenta") table.add_row("John", "Active") table.add_row("Sarah", "Pending") console.print(table)

게임 체인저 인 이유 : 리치는 단지 예쁘게 만들지 않습니다 (정말 잘하지만). 진행 막대, 구문 강조 표시가 있으며 터미널에서 마크 다운을 렌더링합니다. 내 디버깅 세션은 텍스트의 벽에서 삐걱 거리는 것에서 실제로 한눈에 무슨 일이 일어나고 있는지 이해하는 것까지 갔다.

“나는 이것을 더 빨리 알았 으면 좋겠다”는 순간 : 내가 사용할 수 있다는 것을 깨달았을 때 rich.inspect() 레슬링 대신 아름다운 형식의 파이썬 객체를 탐색하려면 dir() 그리고 vars().

2. Polars- 팬더 킬러 내가 필요로 몰랐습니다.

그것이하는 일 : 팬더보다 빠른 데이터 프레임 작업은 메모리를 적게 사용합니다.

나는 수년간 충성스러운 팬더 사용자였습니다. 2GB CSV 파일을 처리해야 할 때까지 스크립트가 메모리 오류로 계속 충돌했습니다. 동료가 폴라를 언급했는데, 나는 그것을 촬영할 것이라고 생각했다.

import polars as pl
Reading large files? No problem.
df = pl.read_csv("huge_file.csv", lazy=True)
Chaining operations that would make Pandas cry
result = ( df .filter(pl.col("status") == "active") .group_by("category") .agg([ pl.col("revenue").sum().alias("total_revenue"), pl.col("user_id").count().alias("user_count") ]) .sort("total_revenue", descending=True) )
Only executes when you call collect()
final_result = result.collect()

게임 체인저 인 이유 : 폴라는 기본적으로 게으르다. 즉, 말할 때까지 작업을 실행하지 않는다. 이를 통해 전체 쿼리 체인을 최적화 할 수 있습니다. 또한 녹슬로 쓰여져 있으므로 터무니없이 빠릅니다.

“나는 이것을 더 빨리 알았 으면 좋겠다”는 순간 : 12 분 만에 4 시간 데이터 처리 작업 마감을 시청합니다. 나는 말 그대로 무언가가 깨 졌다고 생각했다.

3. Typer- 자신을 싫어하게 만들지 않는 명령 줄 앱

그것이하는 일 : 최소한의 코드와 자동 도움말 생성으로 아름다운 CLI 애플리케이션을 만듭니다.

나는 명령 줄 도구를 만들었습니다 argparse그리고 그것은 고통 스러웠습니다. 몇 가지 인수를 구문 분석하기 위해 많은 보일러 플레이트 코드. 그런 다음 타이퍼를 발견하고 갑자기 CLI 도구를 만드는 것이 재미있었습니다.

import typer from pathlib import Path
app = typer.Typer()
@app.command() def process_file( input_file: Path = typer.Argument(..., help="Path to input file"), output_dir: Path = typer.Option("./output", help="Output directory"), verbose: bool = typer.Option(False, "--verbose", "-v", help="Verbose output") ): """ Process a file and save results to output directory. """ if verbose: typer.echo(f"Processing {input_file}...")
# Your processing logic here
typer.echo(f"✅ Done! Results saved to {output_dir}")
if name == "main": app()

게임 체인저 인 이유 : 유형 힌트는 CLI 인터페이스가됩니다. Typer는 자동으로 도움말 텍스트를 생성하고 입력을 확인하며 아름다운 오류 메시지를 제공합니다. Argparse 문서로 더 이상 레슬링이 없습니다.

“나는 이것을 더 빨리 알았 으면 좋겠다”는 순간 : Argparse와 100 회 이상의 라인을 가져갈 20 줄의 코드로 전문적인 CLI 도구를 구축 할 수 있다는 것을 깨달았습니다.

4. httpx- 요청이지만 실제로 현대

그것이하는 일 : 친숙한 요청 API를 유지하면서 Async/Await 및 HTTP/2를 지원하는 HTTP 클라이언트.

나는에 갇혀 있었다 requests 너무 오랫동안 사고 방식. 나를 잘못 이해하지 말고 요청은 훌륭하지만 수백 개의 API 호출을해야 할 때 동기 특성이 병목 현상이됩니다.

import httpx import asyncio
Synchronous usage (just like requests)
response = httpx.get("
But the real magic is async
async def fetch_user_data(user_ids): async with httpx.AsyncClient() as client: tasks = [ client.get(f" for user_id in user_ids ] responses = await asyncio.gather(*tasks) return [r.json() for r in responses]
Fetch 100 users concurrently instead of sequentially
user_data = asyncio.run(fetch_user_data(range(1, 101)))

게임 체인저 인 이유 : 요청과 동일한 친숙한 API이지만 필요할 때 비동기 지원이 있습니다. 또한 HTTP/2를 자동으로 처리하여 동일한 서버에 대한 여러 요청을 크게 속도 할 수 있습니다.

“나는 이것을 더 빨리 알았 으면 좋겠다”는 순간 : ASYNC가있는 요청에서 HTTPX로 전환하여 API 스크래핑 스크립트를 45 분에서 3 분으로 줄입니다.

5. Pydantic- 실제로 의미가있는 데이터 검증

그것이하는 일 : 놀라운 오류 메시지와 함께 Python 유형 힌트를 사용하여 데이터를 검증하고 직렬화합니다.

나는 너무 많은 사용자 정의 검증 코드를 작성했습니다. 필드가 존재하는지 확인, 유형 검증, 누락 된 데이터 처리-소모하고 오류가 발생했습니다. Pydantic은 모든 것을 바꿨습니다.

from pydantic import BaseModel, EmailStr, validator from typing import Optional from datetime import datetime
class User(BaseModel): name: str email: EmailStr age: int signup_date: Optional[datetime] = None
@validator('age')
def validate_age(cls, v):
    if v  150:
        raise ValueError('Age must be between 0 and 150')
    return v
This automatically validates everything
try: user = User( name="John Doe", email="not-an-email",  # This will fail age=25 ) except ValidationError as e: print(e.json(indent=2))  # Beautiful error messages

게임 체인저 인 이유 : 데이터 모델이 귀하의 검증 계층이됩니다. 더 이상 수동 검사가없고, 기형 데이터의 더 이상 신비한 버그가 없습니다. 또한 API 문서에 대한 JSON 스키마를 자동으로 생성합니다.

“나는 이것을 더 빨리 알았 으면 좋겠다”는 순간 : 200+ 라인의 사용자 정의 검증 코드를 삭제하고 더 잘 작동하는 20 라인 Pydantic 모델로 대체합니다.

여기 진짜 교훈

이 라이브러리는 모두 공통점을 공유합니다. 모든 Python 개발자가 직면 한 실제 문제를 해결하지만 처음 사용할 때 거의 마법 같은 느낌을줍니다.

더 큰 교훈? 모든 사람들이 말하는 “표준”라이브러리를 넘어 탐색하는 것을 두려워하지 마십시오. 가장 큰 생산성 이득 중 일부는 내가 무작위 Github 저장소에서 우연히 발견하거나 누군가의 요구 사항에 매장 된 라이브러리에서 나왔습니다 .txt 파일.

또한 다른 사람들의 코드를 읽으십시오. 나는 오픈 소스 프로젝트를 탐색하고 “잠깐만 요, 그 수입은 어떻게됩니까?”

개발 워크 플로를 변경 한 라이브러리는 무엇입니까? 나는 항상 다음 게임 체인저를 찾고 있으며 파이썬 생태계는 결코 나를 놀라게하는 것을 멈추지 않습니다.


이 목록에있을 가치가있는 도서관이 있습니까? 의견에 떨어 뜨립니다 – 저는 항상 파이썬 개발을 더 즐겁게하는 도구를 찾기 위해 항상 사냥하고 있습니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다