Framework de computación paralela y redes asíncronas en C++11, usado en los servicios de back-end de Sogou para crear flujos de tareas basados en DAG.
ChunelFeng/CGraph
Framework de DAG en C++11 sin dependencias para crear y ejecutar grafos de tareas paralelas, con bindings para Python (pycgraph).
- Estrellas
- 2,316
- Forks
- 392
- Issues abiertos
- 13
- Último commit
- hace 4 días
¿Qué es?
CGraph es un framework multiplataforma en C++ para describir y ejecutar grafos dirigidos acíclicos de tareas. Se crea una subclase de nodo, se implementa su método run() y se declaran las dependencias entre nodos. Luego, el planificador ejecuta los nodos dependientes en orden y los independientes en paralelo, con opciones para pausar, reanudar y definir tiempos de espera.
Además de las dependencias simples, el framework ofrece grupos para ramificaciones condicionales, bucles y ejecución concurrente, así como paso de parámetros, eventos, mensajes y aspectos para implementar lógica transversal. Está desarrollado con la biblioteca estándar de C++11, se compila en macOS, Linux, Windows y Android, y también está disponible como paquete de Python: pycgraph.
El proyecto está dirigido a desarrolladores que necesitan coordinar pipelines de procesamiento de varios pasos en código nativo, como flujos de trabajo de algoritmos o preprocesamiento y posprocesamiento de inferencias, sin añadir dependencias externas.
Funciones clave
- 01Ejecuta los nodos dependientes en orden y los independientes en paralelo
- 02Admite ramificaciones condicionales, bucles y ejecución en grupos
- 03Permite pausar y reanudar, y configurar tiempos de espera por nodo
- 04Permite pasar parámetros, mensajes y eventos entre nodos
- 05No tiene dependencias de terceros, se basa en C++11 y ofrece bindings para Python
Casos de uso
- Coordinar pipelines de algoritmos o procesamiento de datos de varias etapas en aplicaciones C++
- Estructurar los pasos de preprocesamiento y posprocesamiento de inferencias de IA como un grafo de dependencias
- Integrar un planificador de grafos de tareas en proyectos embebidos o para Android sin bibliotecas externas
Inicio rápido
- 1
Instala el binding de Python desde PyPI
pip install pycgraph - 2
Guarda la demostración de Python del README como un script y ejecútala con Python
Antes de usarlo
- El README no muestra cómo instalar la versión de C++ con un gestor de paquetes; hay que compilarla desde el código fuente siguiendo la guía independiente COMPILE.md.
- El README principal está escrito en chino y contiene un enlace a otro README en inglés.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es CGraph?
- Framework de DAG en C++11 sin dependencias para crear y ejecutar grafos de tareas paralelas, con bindings para Python (pycgraph). CGraph es un framework multiplataforma en C++ para describir y ejecutar grafos dirigidos acíclicos de tareas. Se crea una subclase de nodo, se implementa su método run() y se declaran las dependencias entre nodos. Luego, el planificador ejecuta los nodos dependientes en orden y los independientes en paralelo, con opciones para pausar, reanudar y definir tiempos de espera.
- ¿CGraph es gratuito? ¿Qué licencia tiene?
- CGraph es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿CGraph sigue mantenido?
- Mantenimiento activo. El último commit de CGraph fue el 3 nov 2026.
- ¿Para qué puedo usar CGraph?
- Coordinar pipelines de algoritmos o procesamiento de datos de varias etapas en aplicaciones C++ Estructurar los pasos de preprocesamiento y posprocesamiento de inferencias de IA como un grafo de dependencias Integrar un planificador de grafos de tareas en proyectos embebidos o para Android sin bibliotecas externas
- ¿Cómo se instala CGraph?
- Instala el binding de Python desde PyPI: pip install pycgraph Guarda la demostración de Python del README como un script y ejecútala con Python
- ¿Dónde consigo CGraph?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/ChunelFeng/CGraph
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Framework de Python basado en luigi para crear pipelines de machine learning con caché automático, reproducibilidad y gestión de dependencias.
Framework Java distribuido de planificación de tareas que admite ejecuciones con cron, a intervalos fijos, con retraso y al estilo MapReduce en nodos servidor y worker.
Plataforma TypeScript de código abierto para crear y desplegar agentes de IA duraderos y de larga ejecución, y flujos de trabajo en segundo plano con reintentos, colas y observabilidad.
Motor de workflows nativo de contenedores para orquestar trabajos paralelos en Kubernetes, implementado como un CRD.
Biblioteca de Python para convertir datos y algoritmos de IA en aplicaciones web listas para producción, con interfaz de usuario, pipelines y programación de tareas.