[02:27] *** Lawouach has joined #kamaelia |
[02:27] *** tdobson has joined #kamaelia |
[02:27] *** eikenberry has joined #kamaelia |
[02:27] *** vmlemon has joined #kamaelia |
[02:27] *** Lawouach_ has joined #kamaelia |
[04:00] *** vmlemon_ has joined #kamaelia |
[04:11] *** dsuch has joined #kamaelia |
[06:35] *** salmon_ has joined #kamaelia |
[07:09] *** tdobson has joined #kamaelia |
[07:11] *** Uraeus has joined #kamaelia |
[07:45] *** dsuch has joined #kamaelia |
[08:19] *** Uraeus has joined #kamaelia |
[09:05] *** Uraeus has joined #kamaelia |
[09:47] *** Uraeus has joined #kamaelia |
[10:40] *** MS- has joined #kamaelia |
[10:42] < MS-> "are the docs available somewhere as PDFs for easy print out?" |
[10:42] < MS-> No, but the docs are as noted autogenerated. I can point you at the code that creates them if you'd like to do that... |
[11:02] < dsuch> MS-: sure, thanks |
[11:02] < dsuch> I just noticed too many 404 :/ |
[11:02] < dsuch> I know you're aware of it, just read half of the IRC logs |
[11:03] < dsuch> hence I thought having it combined in one PDF would be easier to follow |
[11:50] < dsuch> http://paste.ubuntu.com/277118/ - my goal is to have 5 parallel consumers to handle data, each consumer should receive its own message and process it in a blocking manner, could it really be that easy? |
[11:51] < dsuch> well, not really 'should block' as much as 'will block' |
[12:20] *** eikenberry_ has joined #kamaelia |
[12:21] < dsuch> I should mention that producer is much faster than consumers are, that's why I'd like to parallelize it. |
[12:25] *** MS- reads back |
[12:25] < MS-> (was getting lunch) |
[12:27] < MS-> OK, at present there isn't a specific component that will directly achieve the goal you want to do there, but the good news is there's a fair few that do. |
[12:27] < MS-> It's also the sort of thing that it would be nice for the PAR component to handle naturally for you, but that doesn't do what you want in this case. |
[12:28] *** MS- rummages in SVN |
[12:28] < dsuch> I was wondering whether the Carousel and/or Fanout would be of help here? |
[12:28] < MS-> Carousel isn't really quite what you want, and fanout/splitter copy the data to all the recipients |
[12:29] < dsuch> ah, copying, no good here |
[12:29] < MS-> yep |
[12:30] < MS-> This isn't quite what you want, but it's similar |
[12:30] < MS-> http://code.google.com/p/kamaelia/source/browse/trunk/Code/Python/Kamaelia/Kamaelia/Apps/Europython09/Util.py#92 |
[12:30] < MS-> That's a two way balancer component |
[12:30] < MS-> which can send 1/2 the data one one and half the other |
[12:30] < MS-> Which could be extrapolated better |
[12:30] < MS-> But it's not ideal |
[12:31] < MS-> What you ideally want is a component that passes data to a Queue.Queue and that Queue.Queue becomes the inbox for a collection of components |
[12:31] < MS-> allowing which ever one is ready to just consume the data |
[12:32] < MS-> Which is a more complex level than you want here |
[12:32] < MS-> I'm sure I've written something like what you're after though |
[12:32] < dsuch> in that case, I'm now wondering what I have done in that code :-) |
[12:33] < MS-> :) |
[12:33] < dsuch> but hey, no hints please! |
[12:33] < MS-> heh |
[12:33] < dsuch> I'd like to understand it myself :) |
[12:33] < MS-> You sure ? (I'd assumed that was a joke :) ) |
[12:34] < dsuch> yea |
[12:34] < dsuch> er, I mean I'm sure |
[12:34] < MS-> k. I would suggest looking at the source for the PAR component: |
[12:34] < MS-> http://code.google.com/p/kamaelia/source/browse/trunk/Code/Python/Kamaelia/Kamaelia/Chassis/PAR.py |
[12:35] < MS-> But I'll not say why :) |
[12:35] < dsuch> I feel like I'm missing something fundamental about it, that's why. |
[12:35] < MS-> k |
[12:35] < dsuch> ok, will take a look at PAR, thanks |
[12:36] < MS-> You've found the tutorial notes btw I hope ? |
[12:47] < dsuch> um, so I have a list of consumers forwarding the message to next one in the chain, heh |
[12:47] < dsuch> I think I've found it, I'm actually reading it all, in no particular order :) |
[12:52] < MS-> cool. I personally wouldn't do the list of consumers :) |
[12:53] < dsuch> But why did you say PAR wasn't what I wanted? It seems to be exactly what I want (parallel execution) except perhaps for the policy of exiting as soon as children exit? |
[12:54] < dsuch> You mean the very approach could be different? |
[12:54] < dsuch> Or that you wouldn't make such a basic mistake :) |
[12:59] < MS-> PAR is very close. |
[13:00] < MS-> You just want to send the messages that come into it to the first available component |
[13:01] < MS-> Your producer feeds it, and then your derivative of PAR doles messages to components inside it |
[13:01] < MS-> This has the other other half of what you're looking for I think: http://code.google.com/p/kamaelia/source/browse/trunk/Code/Python/Kamaelia/Kamaelia/Apps/Europython09/BB/LineOrientedInputBuffer.py#31 |
[13:02] < MS-> maybe |
[13:02] < dsuch> ah |
[13:02] < dsuch> and I was wondering how to prevent the producer from peeking at consumers' inboxes |
[13:02] < MS-> It's still not as elegant as the queue approach I mentioned though. Which is a shame |
[13:03] < MS-> yeah, peeking at consumers' inboxes is kinda nasty |
[13:03] < MS-> Or at least not guaranteed to be correct |
[13:04] < dsuch> soo.. when the outbox is empty it means we /probably/ have at least one consumer available? otherwise the messages would be queuing up in the outbox? |
[13:10] < dsuch> or not at all, there would be one outbox per consumer so I would need to iterate through them, find an empty one and then put a message there |
[13:11] < dsuch> or I should simply write some code and test it myself :) |
[13:25] < MS-> i always prefer the "play around and write code" approach myself :-) |
[13:26] < MS-> You may want to see what happens to the inbox of the recipient after to send a message to an outbox. |
[13:26] < MS-> I could say more explicitly than that, but you asked me not to :) |
[13:37] < dsuch> heh |
[13:43] < dsuch> oh, have you perhaps found the code for generating documentation? |
[13:50] < MS-> http://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Code/Python/Kamaelia/Tools/DocGen |
[13:50] < MS-> Contains the tools for creating the docs |
[13:50] < MS-> ie inside the Tools directory :) |
[13:55] < dsuch> cheers |
[13:58] < MS-> You're welcome. I've wanted to spend sometime redoing the docs, but I've just not had the time and energy to do that. Very much welcome anything there :-) |
[14:03] < dsuch> sure, I understand it, but don't worry, looking at the logo makes up for any difficulties :) |
[14:17] < MS-> :-) |
[14:24] < MS-> Right, back later. (probably) Off to python-north-west :-) |
[14:24] *** MS- has parted #kamaelia |
[14:27] *** eikenberry_ is now known as eikenberry |
[14:44] *** salmon_ has joined #kamaelia |
[15:42] *** vmlemon__ has joined #kamaelia |
[18:06] *** vmlemon__ has joined #kamaelia |
[19:05] *** Uraeus has joined #kamaelia |
[22:47] *** eikenberry_ has joined #kamaelia |