O projeto Trio visa produzir uma biblioteca de E/S assíncrona/aguardada nativa com qualidade de produção, licenciada permissivamente para Python. Como todas as bibliotecas assíncronas, seu objetivo principal é ajudá-lo a escrever programas que façam várias coisas ao mesmo tempo com E/S paralelizada . Um web spider que deseja buscar muitas páginas em paralelo, um servidor web que precisa fazer malabarismos com muitos downloads e conexões de websocket simultaneamente, um supervisor de processo monitorando vários subprocessos... esse tipo de coisa. Comparado a outras bibliotecas, o Trio tenta se diferenciar com um foco obsessivo na usabilidade e na correção . A simultaneidade é complicada; tentamos tornar mais fácil acertar as coisas.
O Trio foi construído desde o início para aproveitar as vantagens dos recursos mais recentes do Python e se inspira em muitas fontes, em particular no Curio de Dave Beazley. O design resultante é radicalmente mais simples do que concorrentes mais antigos, como asyncio e Twisted, mas igualmente capaz. Trio é a biblioteca de E/S Python que eu sempre quis; Acho que isso torna a construção de programas orientados a E/S mais fácil, menos propensa a erros e simplesmente mais divertida. Talvez você encontre o mesmo.
Este projeto é jovem e ainda um tanto experimental: o design geral é sólido e os recursos existentes são totalmente testados e documentados, mas você pode encontrar funcionalidades ausentes ou arestas. Nós encorajamos você a usá-lo, mas você deve ler e assinar a edição nº 1 para receber um aviso e uma chance de dar feedback sobre quaisquer alterações que quebram a compatibilidade.
Eu quero experimentar! Incrível! Temos um tutorial amigável para você começar; nenhuma experiência anterior com codificação assíncrona é necessária.
Ugh, não quero ler tudo isso – mostre-me algum código! Se você estiver impaciente, aqui está um exemplo simples de simultaneidade, um cliente de eco e um servidor de eco.
Como o Trio torna os programas mais fáceis de ler e raciocinar do que as abordagens concorrentes? O Trio é baseado em uma nova forma de pensar que chamamos de “simultaneidade estruturada”. A melhor introdução teórica é o artigo Notas sobre concorrência estruturada, ou: Declaração Go considerada prejudicial. Ou confira esta palestra na PyCon 2018 para ver uma demonstração da implementação do algoritmo "Happy Eyeballs" em uma biblioteca mais antiga versus Trio.
Legal, mas funcionará no meu sistema? Provavelmente! Contanto que você tenha algum tipo de Python 3.9 ou melhor (CPython ou versões atualmente mantidas do PyPy3 são adequados) e esteja usando Linux, macOS, Windows ou FreeBSD, o Trio funcionará. Outros ambientes também podem funcionar, mas são nesses que testamos. E todas as nossas dependências são Python puro, exceto CFFI no Windows, que tem rodas disponíveis, portanto a instalação deve ser fácil (não é necessário nenhum compilador C).
Eu tentei, mas não está funcionando. Lamento ouvir isso! Você pode tentar pedir ajuda em nossa sala de bate-papo ou fórum, registrar um bug ou postar uma pergunta no StackOverflow, e faremos o possível para ajudá-lo.
O trio é incrível e quero ajudar a torná-lo ainda mais incrível! Você é o melhor! Há muito trabalho a fazer - preencher funcionalidades ausentes, construir um ecossistema de bibliotecas que usam o Trio, testar a usabilidade (por exemplo, talvez tente ensinar a si mesmo ou a um amigo a usar o Trio e faça uma lista de todas as mensagens de erro que você encontrou e coloque onde você ficou confuso?), melhorando a documentação, ... confira nosso guia para colaboradores!
Não tenho planos imediatos de usá-lo, mas adoro saber mais sobre o design da biblioteca de E/S! Isso é um pouco estranho? Mas sejamos honestos, você se encaixará muito bem por aqui. Temos um subfórum completo para discutir concorrência estruturada (desenvolvedores de outros sistemas são bem-vindos!). Ou confira nossa discussão sobre opções de design, lista de leitura e questões marcadas como discussão de design.
Quero ter certeza de que os advogados da minha empresa não ficarão bravos comigo! Não se preocupe, o Trio é licenciado permissivamente sob sua escolha de MIT ou Apache 2. Consulte LICENÇA para obter detalhes.
Solicitamos aos colaboradores que sigam nosso código de conduta em todos os espaços do projeto.