Are publish-subscribe systems (e.g. ActiveMQ, Google App Engine pub/sub, and pypubsub) mainly for message communication between applications running over multiple machines with different memory spaces? Or can they be used for handling efficiently message communication between components of a single application running within a single machine?
PyPubSub was designed to provide message communication between components of a single application. This does not imply running within a single machine, although a single machine would be the typical scenario. If a "network distributed" application (one that consists of severa collaborating components spread across multiple machines) takes care of marshalling data between the machines, pypubsub could still be used to great effect.