[Pypes-user] Pypes meet Axon ?
Status: Beta
Brought to you by:
egaumer
From: Michael S. <spa...@gm...> - 2009-08-15 16:22:27
|
Hi, Just saw pypes pass through the PyPI RSS feed, and think it's really interesting/cool. Congratulations on getting a release out the door :-) For the reason why I find it interesting, I'll let code do the talking, with some things I find interesting parallels... :-) pype.component.py class Component(object): # stackless.tasklet based Axon.Component.py class component(microprocess): # generator based (we also have thread based) pypes.component.py def __init__(self): self.inputs = {'in' : [None, 'Default input port'] } self.outputs = {'out': [None, 'Default output port']} self._parameters = {} Axon.Component.py Inboxes = {"inbox" : "Default inbox for bulk data. Used in a pipeline much like stdin", "control" : "Secondary inbox often used for signals. The closest analogy is unix signals" } Outboxes = {"outbox": "Default data out outbox, used in a pipeline much like stdout", "signal": "The default signal based outbox - kinda like stderr,but more for sending singal type signals", } def __init__(self, *args, **argd): """(subclass always calls this via something like this: super(component, self).__init__() self.__dict__.update(argd) self.inboxes = dict() self.outboxes = dict() for boxname in self.Inboxes: self.inboxes[boxname] = makeInbox(notify=self.unpause) for boxname in self.Outboxes: self.outboxes[boxname] = makeOutbox(notify=self.unpause) .... pypes.component.py def recv(self, port): Axon.Component.py def recv(self,boxname="inbox"): pypes.component.py def send(self, port, data): Axon.Component.py def send(self,message, boxname="outbox"): pypes.component.py def recvall(self, port): Axon.Component.py def Inbox(self, boxname="inbox"): You'll see further equivalences between Axon.Box.py and pype.py Clearly we have some similar thinking here, and I must also say that your visual design programme is very shiny, and similar to our Compose tool, which is currently bust - so yours is by definition far nicer at the moment :-) (Though it shares code with our pygame based run time visualiser which you can see described here: http://www.kamaelia.org/AxonVisualiser ) Anyway some differences: -> You're using stackless tasklets & multiprocessing <- We're using standard generators, threads & pprocessing -> You appear to deny cyclic graphs. (I could be very wrong here though :) <- Many of our systems contain cycles. -> You appear to have been aware of J P Morrisons work before starting <- I wasn't . (starting points for me were occam, unix, hardware, etc) Interesting to me: * I've wanted to switch from pprocessing to multiprocessing * I've been curious about supporting more forms of component, including stackless tasklets and greenlets for a while :-) * You also have a very shiny web based system editor, whereas our compose tool (which uses pygame & tkinter) is currently out of action :-) ie figuring out some way of interoperating with Pypes strikes me as a really nice thing to do :) (The biggest "issue" I can see there is the switch around of port/box name & data really) Anyway, I just wanted to say that pypes looks really neat & interesting, and congratulations on getting a release out! :-) Good luck & have fun :) :-) Michael. -- http://yeoldeclue.com/blog http://twitter.com/kamaelian http://www.kamaelia.org/Home |