From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: <4f34febc0903120959r1fd5746ev2e6e9fb068958fb0@mail.gmail.com> References: <4f34febc0903120844t3b2448a1gac4e827da54cb7e@mail.gmail.com> <4f34febc0903120959r1fd5746ev2e6e9fb068958fb0@mail.gmail.com> Date: Thu, 12 Mar 2009 19:51:10 +0000 Message-ID: From: roger peppe To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: multipart/mixed; boundary=0015174beeb85190700464f14ef2 Subject: Re: [9fans] python csp Topicbox-Message-UUID: ba685fdc-ead4-11e9-9d60-3106f5b1d025 --0015174beeb85190700464f14ef2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 2009/3/12 John Barham : >>> How about using queues (http://docs.python.org/library/queue.html)? >> >> no alt. > > Couldn't you implement it approximately using > http://docs.python.org/library/queue.html#Queue.Queue.qsize? no. "approximately" in this case would mean "wrong". for the time being, as i'm limited on time, i'm using pycsp with a very slim wrapper around it to make its interface palatable. it'll all be hideously inefficient, but i'm not too concerned about that currently. i've attached it in case anyone's interested. joel: multiple readers and writers isn't the same thing as alt at all - you need to be able to read from more than one channel at once. sharing a single channel between several processes doesn't get you that (although it's great to have, and the plan9/inferno channel model supports it) rog. --0015174beeb85190700464f14ef2 Content-Type: application/octet-stream; name="p9csp.py" Content-Disposition: attachment; filename="p9csp.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fs7uuqcw0 aW1wb3J0IHB5Y3NwCgpDaGFubmVsID0gcHljc3AuQ2hhbm5lbAoKZGVmIGNoYW4oKm4pOgoJJycn Q3JlYXRlIGEgY2hhbm5lbC4gSWYgYW4gYXJndW1lbnQgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcwoJ dGhlIGJ1ZmZlciBzaXplIChkZWZhdWx0IDAsIHVuYnVmZmVyZWQpJycnCglpZiBsZW4obikgPT0g MDoKCQluID0gMAoJZWxzZToKCQluID0gblswXQoJaWYgbiA+IDA6CgkJYyA9IHB5Y3NwLkJ1ZmZl cmVkQW55Mk9uZUNoYW5uZWwoYnVmZmVyID0gcHljc3AuRmlmb0J1ZmZlcihuKSkKCWVsc2U6CgkJ YyA9IHB5Y3NwLkFueTJPbmVDaGFubmVsKCk7CglyZXR1cm4gYzsKCmRlZiBhbHQoKmNzKToKCScn J2FsdChjaGFuLi4uLikKCUFsdCB3YWl0cyB1bnRpbCBvbmUgb2YgdGhlIGNoYW5uZWxzIGJlY29t ZXMgcmVhZHkgZm9yIHJlYWRpbmcsCgl0aGVuIHJldHVybnMgaXRzIHJlYWQgbWVtYmVyIC0gaXQg aXMgdXAgdG8gdGhlIGNhbGxlcgoJdG8gZG8gdGhlIHJlYWQnJycKCXJldHVybiBweWNzcC5BbHRl cm5hdGl2ZSgqbWFwKGxhbWJkYSBjOiBjLnJlYWQsIGNzKSkuc2VsZWN0KCk7CgpkZWYgYWx0Zigq Y3MpOgoJJycnYWx0ZihjaGFuLi4uLCBmbiwgY2hhbi4uLiwgZm4sIC4uLikKCUFsdGYgd2FpdHMg dW50aWwgb25lIG9mIHRoZSBjaGFubmVscyBpcyByZWFkeSBmb3IgcmVhZGluZywKCXRoZW4gcmVh ZHMgZnJvbSBpdCwgY2FsbHMgaXRzIGFzc29jaWF0ZWQgZnVuY3Rpb24sCglhbmQgcmV0dXJucyB0 aGUgcmVzdWx0IG9mIHRoYXQgY2FsbC4nJycKCglhcyA9IFtdCglmcyA9IFtdCglpID0gMAoJd2hp bGUgaSA8IGxlbihjcyk6CgkJaiA9IGkKCQl3aGlsZSBpc2luc3RhbmNlKGNzW2pdLCBDaGFubmVs KToKCQkJaiA9IGogKyAxCgkJaWYgaSA9PSBqOgoJCQlyYWlzZSAnZXhwZWN0ZWQgY2hhbm5lbChz KScKCQlmID0gY3Nbal0KCQlrID0gaQoJCXdoaWxlIGsgPCBqOgoJCQlhcy5hcHBlbmQoY3Nba10u cmVhZCkKCQkJZnMuYXBwZW5kKGYpCgkJCWsgPSBrICsgMQoJCWkgPSBqICsgMQoJYSA9IHB5Y3Nw LkFsdGVybmF0aXZlKCphcykKCXMgPSBhLnNlbGVjdCgpCglpID0gMAoJd2hpbGUgaSA8IGxlbihh cyk6CgkJaWYgcyA9PSBhc1tpXToKCQkJcmV0dXJuIGZzW2ldKHMoKSkKCQlpID0gaSArIDEKCmRl ZiBzcGF3bihmLCAqYXJncywgKiprd2FyZ3MpOgoJcHljc3AuUHJvY2VzcyhmLCAqYXJncywgKipr d2FyZ3MpLnN0YXJ0KCk7Cg== --0015174beeb85190700464f14ef2--