What's the difference betwee "Actor model" and "Reactor pattern" in Python?

Question:

https://en.wikipedia.org/wiki/Actor_model, the project is called “pulsar

https://en.wikipedia.org/wiki/Reactor_pattern, the projects are Twisted and Tornado

What’s the difference in the theory and practice?

Asked By: est

||

Answers:

There’s no difference. “Actor model” is somewhat more ambiguous, but both terms are sufficiently general that they can apply to lots of different software with different characteristics outside their basic model.

Answered By: Glyph

Twisted, tornado and pulsar all use an event loop (called reactor in twisted) to wait for events on file descriptors.
In this respect, they are similar libraries and therefore can interoperate with each other.

The actor model in pulsar refers to the parallel side of the asynchronous framework. This is where pulsar differs from twisted for example. In pulsar each actor (think of a specialised thread or process) has its own event loop. In this way any actor can run its own asynchronous server for example.

More information about the actor implementation in pulsar here

http://quantmind.github.io/pulsar/design.html

Answered By: Luca Sbardella

Reactors enable determinism while preserving the style of actors, and without the performance loss of indiscriminately constraining concurrency to fix bugs due to race conditions and other sources of nondeterminism. Reactors promote modularity and allow for distributed execution.

Answered By: Paul Borrill