All Projects → pgiri → Pycos

pgiri / Pycos

Licence: other
Concurrent, Asynchronous, Distributed, Communicating Tasks with Python

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pycos

asyncoro
Python framework for asynchronous, concurrent, distributed, network programming with coroutines
Stars: ✭ 50 (+66.67%)
Mutual labels:  distributed-computing, concurrent-programming, asynchronous-programming
Sobjectizer
An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
Stars: ✭ 172 (+473.33%)
Mutual labels:  concurrent-programming, message-passing
Tascalate Async Await
Async / Await asynchronous programming model for Java similar to the functionality available in C# 5. The implementation is based on continuations for Java (see my other projects).
Stars: ✭ 60 (+100%)
Mutual labels:  asynchronous-programming, concurrent-programming
Tascalate Concurrent
Implementation of blocking (IO-Bound) cancellable java.util.concurrent.CompletionStage and related extensions to java.util.concurrent.ExecutorService-s
Stars: ✭ 144 (+380%)
Mutual labels:  asynchronous-programming, concurrent-programming
Klyng
A message-passing distributed computing framework for node.js
Stars: ✭ 167 (+456.67%)
Mutual labels:  message-passing, distributed-computing
jet
Jet is a simple OOP, dynamically typed, functional language that runs on the Erlang virtual machine (BEAM). Jet's syntax is Ruby-like syntax.
Stars: ✭ 22 (-26.67%)
Mutual labels:  distributed-computing, concurrent-programming
Chymyst Core
Declarative concurrency in Scala - The implementation of the chemical machine
Stars: ✭ 142 (+373.33%)
Mutual labels:  asynchronous-programming, concurrent-programming
Zio
ZIO — A type-safe, composable library for async and concurrent programming in Scala
Stars: ✭ 3,167 (+10456.67%)
Mutual labels:  asynchronous-programming, concurrent-programming
Lazy
Light-weight header-only library for parallel function calls and continuations in C++ based on Eric Niebler's talk at CppCon 2019.
Stars: ✭ 93 (+210%)
Mutual labels:  concurrent-programming, asynchronous-programming
scalable-concurrent-containers
High performance containers and utilities for concurrent and asynchronous programming
Stars: ✭ 101 (+236.67%)
Mutual labels:  concurrent-programming, asynchronous-programming
mux-stream
(De)multiplex asynchronous streams
Stars: ✭ 34 (+13.33%)
Mutual labels:  concurrent-programming, asynchronous-programming
Concurrencpp
Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all
Stars: ✭ 340 (+1033.33%)
Mutual labels:  asynchronous-programming, concurrent-programming
Jcsprout
👨‍🎓 Java Core Sprout : basic, concurrent, algorithm
Stars: ✭ 26,536 (+88353.33%)
Mutual labels:  concurrent-programming
Mt
tlock, RWMUTEX, Collab, USM, RSem and other C++ templates for Windows to provide read/write mutex locks, various multithreading tools, collaboration, differential updates and more
Stars: ✭ 18 (-40%)
Mutual labels:  concurrent-programming
Hivemind
Decentralized deep learning in PyTorch. Built to train models on thousands of volunteers across the world.
Stars: ✭ 661 (+2103.33%)
Mutual labels:  asynchronous-programming
Rain
Framework for large distributed pipelines
Stars: ✭ 645 (+2050%)
Mutual labels:  distributed-computing
Fiber
Distributed Computing for AI Made Simple
Stars: ✭ 866 (+2786.67%)
Mutual labels:  distributed-computing
Construct
JavaScript Digital Organisms simulator
Stars: ✭ 17 (-43.33%)
Mutual labels:  distributed-computing
Transient
A full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state)
Stars: ✭ 617 (+1956.67%)
Mutual labels:  distributed-computing
Hydra
A light-weight library for building distributed applications such as microservices
Stars: ✭ 611 (+1936.67%)
Mutual labels:  distributed-computing

pycos

This project is hosted at `Sourceforge <https://pycos.sourceforge.io>`_;
however, sourceforge has been unreliable for the past few weeks, so
(for now) documentation has been uploaded to `github
<https://pgiri.github.io/pycos/index.html>`_ as well.

pycos <https://pgiri.github.io/pycos/index.html>_ is a Python framework for asynchronous, concurrent, distributed programming with tasks, asynchronous completions and message passing.

Unlike with other asynchronous frameworks, programs developed with pycos have same logic and structure as programs with threads, except for a few syntactic changes - mostly using yield with asynchronous completions that give control to pycos's scheduler, which interleaves executions of tasks, similar to the way an operating system executes multiple processes. In addition, pycos has many additional features, including message passing for communication, distributed computing/programming etc.

Unlike threads, creating tasks with pycos is very efficient. Moreover, with pycos context switch occurs only when tasks use yield (typically with an asychronous call), so there is no need for locking and there is no overhead of unnecessary context switches.

pycos works with Python versions 2.7+ and 3.1+. It has been tested with Linux, Mac OS X and Windows; it may work on other platforms, too.

Features

  • No callbacks or event loops! No need to lock critical sections either,

  • Efficient polling mechanisms epoll, kqueue, /dev/poll, Windows I/O Completion Ports (IOCP) for high performance and scalability,

  • Asynchronous (non-blocking) sockets and pipes, for concurrent processing of I/O,

  • SSL for security,

  • Asynchronous locking primitives similar to Python threading module,

  • Asynchronous timers and timeouts,

  • Message passing <http://en.wikipedia.org/wiki/Message_passing>_ for (local and remote) tasks to exchange messages one-to-one with Message Queue Pattern <http://en.wikipedia.org/wiki/Message_queue>_ or through broadcasting channels with Publish-Subscribe Pattern <http://en.wikipedia.org/wiki/Publish/subscribe>_,

  • Location transparency <http://en.wikipedia.org/wiki/Location_transparency>_ with naming and locating (local and remote) resources,

  • Distributing computation components (code and data) for execution of distributed communicating processes, for wide range of use cases, covering SIMD, MISD, MIMD <https://en.wikipedia.org/wiki/Flynn%27s_taxonomy>_ system architectures at the process level, web interface <https://pgiri.github.io/pycos/dispycos.html#client-browser-interface>_ to monitor cluster/application status/performance; in-memory processing <https://en.wikipedia.org/wiki/In-memory_processing>_, data streaming, real-time (live) analytics and cloud computing are supported as well,

  • Monitoring and restarting of (local or remote) tasks, for fault detection and fault-tolerance,

  • Hot-swapping of task functions, for dynamic system reconfiguration,

  • Thread pools with asynchronous task completions, for executing (external) synchronous tasks, such as reading standard input.

Dependencies

pycos is implemented with standard modules in Python.

If psutil <https://pypi.python.org/pypi/psutil>_ is available on nodes, node availability status (CPU, memory and disk) is sent in status messages, and shown in web browser so node/application performance can be monitored.

Under Windows efficient polling notifier I/O Completion Ports (IOCP) is supported only if pywin32 <https://github.com/mhammond/pywin32>_ is available; otherwise, inefficient select notifier is used.

Installation

To install pycos, run::

python -m pip install pycos

Authors

  • Giridhar Pemmasani

Links

  • Project page <https://pgiri.github.io/pycos/index.html>_.
  • GitHub (Code Repository) <https://github.com/pgiri/pycos>_.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].