<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CSP</id>
	<title>CSP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CSP"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CSP&amp;action=history"/>
	<updated>2026-05-14T12:17:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=CSP&amp;diff=29783&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CSP&amp;diff=29783&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; #csp.py &lt;br /&gt;
 #Copyright 2003 June Kim &amp;amp;lt;juneaftn at hanmail dot net&amp;amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 from Queue import Queue &lt;br /&gt;
 import threading, thread &lt;br /&gt;
 import netstring, socket&lt;br /&gt;
 from cPickle import dumps,loads&lt;br /&gt;
 &lt;br /&gt;
 class Process: &lt;br /&gt;
     def __init__(self): &lt;br /&gt;
         pass &lt;br /&gt;
     def run(self): &lt;br /&gt;
         pass &lt;br /&gt;
  &lt;br /&gt;
 class ParProcess(Process): &lt;br /&gt;
     def __init__(self,processes): &lt;br /&gt;
         Process.__init__(self) &lt;br /&gt;
         self.ps=processes &lt;br /&gt;
     def run(self): &lt;br /&gt;
         threads=[] &lt;br /&gt;
         for each in self.ps: &lt;br /&gt;
             threads.append(threading.Thread(target=each.run)) &lt;br /&gt;
         for each in threads: &lt;br /&gt;
             each.setDaemon(True) &lt;br /&gt;
             each.start() &lt;br /&gt;
         for each in threads: &lt;br /&gt;
             each.join() &lt;br /&gt;
 &lt;br /&gt;
 class SeqProcess(Process):&lt;br /&gt;
     def __init__(self,processes): &lt;br /&gt;
         Process.__init__(self) &lt;br /&gt;
         self.ps=processes &lt;br /&gt;
     def run(self):&lt;br /&gt;
         for each in self.ps:&lt;br /&gt;
             each.run()&lt;br /&gt;
     &lt;br /&gt;
 class Channel: &lt;br /&gt;
     def __init__(self,buffer=1): &lt;br /&gt;
         self.q=Queue(buffer) &lt;br /&gt;
     def get(self): &lt;br /&gt;
         if self.q.get()!=None: #for block &lt;br /&gt;
             raise &amp;quot;None expected&amp;quot; &lt;br /&gt;
         return self.q.get() &lt;br /&gt;
     def put(self,v): &lt;br /&gt;
         self.q.put(None) #for block &lt;br /&gt;
         return self.q.put(v) &lt;br /&gt;
  &lt;br /&gt;
 class NetChannel: &lt;br /&gt;
     def __init__(self,socket): &lt;br /&gt;
         self.s=socket &lt;br /&gt;
     def get(self): &lt;br /&gt;
         v=loads(netstring.readns(self.s)) #block &lt;br /&gt;
         netstring.writens(self.s,&amp;quot;ACK&amp;quot;) &lt;br /&gt;
         return v &lt;br /&gt;
     def put(self,v): &lt;br /&gt;
         netstring.writens(self.s,dumps(v)) &lt;br /&gt;
         ack=netstring.readns(self.s) #block &lt;br /&gt;
         if ack!=&amp;#039;ACK&amp;#039;: &lt;br /&gt;
             raise IOError, &amp;quot;ACK expected but got %s&amp;quot;%ack &lt;br /&gt;
  &lt;br /&gt;
 class Client(Process): &lt;br /&gt;
     def __init__(self,addr,outstream): &lt;br /&gt;
         self.addr=addr &lt;br /&gt;
         self.out_=outstream &lt;br /&gt;
     def run(self): &lt;br /&gt;
         s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)&lt;br /&gt;
         while 1:&lt;br /&gt;
             try:&lt;br /&gt;
                 s.connect(self.addr)&lt;br /&gt;
             except socket.error:&lt;br /&gt;
                 continue&lt;br /&gt;
             else:&lt;br /&gt;
                 break&lt;br /&gt;
         self.out_.put(s) &lt;br /&gt;
          &lt;br /&gt;
 class Server(Process): &lt;br /&gt;
     def __init__(self,addr,outstream): &lt;br /&gt;
         self.addr=addr &lt;br /&gt;
         self.out_=outstream &lt;br /&gt;
     def run(self): &lt;br /&gt;
         s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) &lt;br /&gt;
         s.bind(self.addr) &lt;br /&gt;
         s.listen(1) &lt;br /&gt;
         s2,addr=s.accept() &lt;br /&gt;
         self.out_.put(s2) &lt;br /&gt;
  &lt;br /&gt;
 class ViaNet: &lt;br /&gt;
     def __init__(self,addr): &lt;br /&gt;
         self.outc=Channel() &lt;br /&gt;
         background(self._Process(addr,self.outc)) &lt;br /&gt;
         self.netc=None &lt;br /&gt;
     def get(self): &lt;br /&gt;
         nc=self.getNetChannel() &lt;br /&gt;
         return nc.get()                 &lt;br /&gt;
     def put(self,v): &lt;br /&gt;
         nc=self.getNetChannel() &lt;br /&gt;
         return nc.put(v) &lt;br /&gt;
     def getNetChannel(self): &lt;br /&gt;
         if self.netc: &lt;br /&gt;
             return self.netc &lt;br /&gt;
         s=self.outc.get() &lt;br /&gt;
         self.netc=NetChannel(s) &lt;br /&gt;
         return self.netc &lt;br /&gt;
      &lt;br /&gt;
 class OneToNet(ViaNet): &lt;br /&gt;
     _Process=Client &lt;br /&gt;
  &lt;br /&gt;
 class NetToOne(ViaNet): &lt;br /&gt;
     _Process=Server &lt;br /&gt;
  &lt;br /&gt;
 def background(aProcess,args=()): &lt;br /&gt;
     thread.start_new_thread(aProcess.run,args) &lt;br /&gt;
----&lt;br /&gt;
 #remoteprocess.py &lt;br /&gt;
 #Copyright 2003 June Kim &amp;amp;lt;juneaftn at hanmail dot net&amp;amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 from csp import * &lt;br /&gt;
  &lt;br /&gt;
 PORT=8881 &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 class MyP1(Process): &lt;br /&gt;
     def __init__(self,outstream): &lt;br /&gt;
         Process.__init__(self) &lt;br /&gt;
         self.out_=outstream &lt;br /&gt;
     def run(self): &lt;br /&gt;
         print &amp;quot;putting...&amp;quot; &lt;br /&gt;
         self.out_.put(3.14159) &lt;br /&gt;
          &lt;br /&gt;
 class MyP2(Process): &lt;br /&gt;
     def __init__(self,instream): &lt;br /&gt;
         Process.__init__(self) &lt;br /&gt;
         self.in_=instream &lt;br /&gt;
     def run(self): &lt;br /&gt;
         print &amp;quot;getting...&amp;quot; &lt;br /&gt;
         v=self.in_.get() &lt;br /&gt;
         print &amp;quot;got&amp;quot;,v&lt;br /&gt;
  &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;: &lt;br /&gt;
     cout=OneToNet((&amp;#039;localhost&amp;#039;,PORT)) &lt;br /&gt;
     cin=NetToOne((&amp;#039;localhost&amp;#039;,PORT)) &lt;br /&gt;
     ParProcess([MyP1(cout),MyP2(cin)]).run() &lt;br /&gt;
----&lt;br /&gt;
 #fib.py &lt;br /&gt;
 #Copyright 2003 June Kim &amp;amp;lt;juneaftn at hanmail dot net&amp;amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 from csp import Process,ParProcess,Channel, background &lt;br /&gt;
          &lt;br /&gt;
 class Cons(Process):   &lt;br /&gt;
     def __init__(self,n,instream,outstream):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.n=n   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
         self.out_=outstream   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         self.out_.put(self.n)   &lt;br /&gt;
         while True:   &lt;br /&gt;
             v=self.in_.get()   &lt;br /&gt;
             self.out_.put(v)   &lt;br /&gt;
                            &lt;br /&gt;
 class Plus(Process):   &lt;br /&gt;
     def __init__(self,outstream,istream1,istream2):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.out_=outstream   &lt;br /&gt;
         self.in1_=istream1   &lt;br /&gt;
         self.in2_=istream2   &lt;br /&gt;
     def run(self):     &lt;br /&gt;
         while 1:   &lt;br /&gt;
             v1=self.in1_.get()   &lt;br /&gt;
             v2=self.in2_.get()   &lt;br /&gt;
             self.out_.put(v1+v2)   &lt;br /&gt;
    &lt;br /&gt;
 class Dup(Process):   &lt;br /&gt;
     def __init__(self,instream,ostream1,ostream2):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
         self.out1_=ostream1   &lt;br /&gt;
         self.out2_=ostream2   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         while 1:   &lt;br /&gt;
             v=self.in_.get()   &lt;br /&gt;
             self.out1_.put(v)   &lt;br /&gt;
             self.out2_.put(v)   &lt;br /&gt;
    &lt;br /&gt;
 class Print(Process): &lt;br /&gt;
     def __init__(self,instream):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         while 1: &lt;br /&gt;
             v=self.in_.get() &lt;br /&gt;
             print v &lt;br /&gt;
             time.sleep(0.5) &lt;br /&gt;
      &lt;br /&gt;
 def q():   &lt;br /&gt;
     return Channel()   &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 class Fib(Process): &lt;br /&gt;
     def __init__(self,outstream): &lt;br /&gt;
         Process.__init__(self) &lt;br /&gt;
         c1d1=q()   &lt;br /&gt;
         d1c2=q()   &lt;br /&gt;
         c2d2=q()   &lt;br /&gt;
         d2p=outstream &lt;br /&gt;
         d2plus=q()   &lt;br /&gt;
         plusc1=q()   &lt;br /&gt;
         d1plus=q()   &lt;br /&gt;
         c1=Cons(1,plusc1,c1d1)   &lt;br /&gt;
         d1=Dup(c1d1,d1plus,d1c2)   &lt;br /&gt;
         c2=Cons(1,d1c2,c2d2)   &lt;br /&gt;
         d2=Dup(c2d2,d2plus,d2p)   &lt;br /&gt;
         plus=Plus(plusc1,d1plus,d2plus) &lt;br /&gt;
         self.ps=[c1,d1,c2,d2,plus] &lt;br /&gt;
         self.out_=d2p &lt;br /&gt;
     def run(self): &lt;br /&gt;
         ParProcess(self.ps).run() &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;: &lt;br /&gt;
     outq=q() &lt;br /&gt;
     f=Fib(outq) &lt;br /&gt;
     background(f) &lt;br /&gt;
     for i in xrange(10): &lt;br /&gt;
         print outq.get() &lt;br /&gt;
     #ParProcess([f,Print(outq)]).run() &lt;br /&gt;
----&lt;br /&gt;
 #netstring.py &lt;br /&gt;
 #from Steve Holden&amp;#039;s Python Web Programming&lt;br /&gt;
 &lt;br /&gt;
 def readns(sock): &lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;read a netstring from a socket.&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
     size = &amp;quot;&amp;quot; &lt;br /&gt;
     while 1: &lt;br /&gt;
         c = sock.recv(1) &lt;br /&gt;
         if c == &amp;quot;:&amp;quot;: &lt;br /&gt;
             break &lt;br /&gt;
         elif not c: &lt;br /&gt;
             raise IOError, &amp;quot;short netstring read&amp;quot; &lt;br /&gt;
         size = size + c &lt;br /&gt;
     size = sz = int(size) &lt;br /&gt;
     s = &amp;quot;&amp;quot; &lt;br /&gt;
     while sz: &lt;br /&gt;
         ss = sock.recv(sz) &lt;br /&gt;
         if not ss: &lt;br /&gt;
             raise IOError, &amp;quot;short netstring read&amp;quot; &lt;br /&gt;
         s += ss &lt;br /&gt;
         sz -= len(ss) &lt;br /&gt;
     if len(s) != size: &lt;br /&gt;
         raise IOError, &amp;quot;short netstring read&amp;quot; &lt;br /&gt;
     if sock.recv(1) != &amp;quot;,&amp;quot;: &lt;br /&gt;
         raise IOError, &amp;quot;missing netstring terminator&amp;quot; &lt;br /&gt;
     return s &lt;br /&gt;
  &lt;br /&gt;
 def writens(sock, s): &lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;write a netstring to a socket.&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
     s = encode(s) &lt;br /&gt;
     while len(s): &lt;br /&gt;
         l = sock.send(s) &lt;br /&gt;
         s = s[l:] &lt;br /&gt;
  &lt;br /&gt;
 def encode(s): &lt;br /&gt;
     return &amp;quot;%d:%s,&amp;quot; % (len(s), s) &lt;br /&gt;
  &lt;br /&gt;
 def decode(s): &lt;br /&gt;
     try: &lt;br /&gt;
         if s[-1] != &amp;quot;,&amp;quot;: &lt;br /&gt;
             raise ValueError &lt;br /&gt;
         p = s.index(&amp;quot;:&amp;quot;) &lt;br /&gt;
         l = int(s[0:p]) &lt;br /&gt;
         if len(s) != p + l + 2: &lt;br /&gt;
             raise ValueError &lt;br /&gt;
         return s[p+1:-1] &lt;br /&gt;
     except ValueError: &lt;br /&gt;
         raise ValueError, &amp;quot;netstring format error: &amp;quot; + s &lt;br /&gt;
  &lt;br /&gt;
 def freadns(f): &lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;read a netstring from a file.&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
     size = &amp;quot;&amp;quot; &lt;br /&gt;
     while 1: &lt;br /&gt;
         c = f.read(1) &lt;br /&gt;
         if c == &amp;quot;:&amp;quot;: &lt;br /&gt;
             break &lt;br /&gt;
         elif not c: &lt;br /&gt;
             raise IOError, &amp;quot;short netstring read&amp;quot; &lt;br /&gt;
         size = size + c &lt;br /&gt;
     size = sz = int(size) &lt;br /&gt;
     s = &amp;quot;&amp;quot; &lt;br /&gt;
     while sz: &lt;br /&gt;
         ss = f.read(sz) &lt;br /&gt;
         if not ss: &lt;br /&gt;
             raise IOError, &amp;quot;short netstring read&amp;quot; &lt;br /&gt;
         s += ss &lt;br /&gt;
         sz -= len(ss) &lt;br /&gt;
     if len(s) != size: &lt;br /&gt;
         raise IOError, &amp;quot;short netstring read&amp;quot; &lt;br /&gt;
     if f.read(1) != &amp;quot;,&amp;quot;: &lt;br /&gt;
         raise IOError, &amp;quot;missing netstring terminator&amp;quot; &lt;br /&gt;
     return s &lt;br /&gt;
  &lt;br /&gt;
 def fwritens(f, s): &lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;write a netstring to a file.&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
     s = encode(s) &lt;br /&gt;
     f.write(s) &lt;br /&gt;
----&lt;br /&gt;
 #rfib2.py &lt;br /&gt;
 #Copyright 2003 June Kim &amp;amp;lt;juneaftn at hanmail dot net&amp;amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 from csp import * &lt;br /&gt;
 import time&lt;br /&gt;
 &lt;br /&gt;
 MYADDR=(&amp;#039;localhost&amp;#039;,8121)&lt;br /&gt;
 YOURADDR=(&amp;#039;localhost&amp;#039;,8142)&lt;br /&gt;
          &lt;br /&gt;
 class Cons(Process):   &lt;br /&gt;
     def __init__(self,n,instream,outstream):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.n=n   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
         self.out_=outstream   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         self.out_.put(self.n)   &lt;br /&gt;
         while True:   &lt;br /&gt;
             v=self.in_.get()   &lt;br /&gt;
             self.out_.put(v)   &lt;br /&gt;
                            &lt;br /&gt;
 class Plus(Process):   &lt;br /&gt;
     def __init__(self,outstream,istream1,istream2):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.out_=outstream   &lt;br /&gt;
         self.in1_=istream1   &lt;br /&gt;
         self.in2_=istream2   &lt;br /&gt;
     def run(self):     &lt;br /&gt;
         while 1:   &lt;br /&gt;
             v1=self.in1_.get()   &lt;br /&gt;
             v2=self.in2_.get()   &lt;br /&gt;
             self.out_.put(v1+v2)   &lt;br /&gt;
    &lt;br /&gt;
 class Dup(Process):   &lt;br /&gt;
     def __init__(self,instream,ostream1,ostream2):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
         self.out1_=ostream1   &lt;br /&gt;
         self.out2_=ostream2   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         while 1:   &lt;br /&gt;
             v=self.in_.get()   &lt;br /&gt;
             self.out1_.put(v)   &lt;br /&gt;
             self.out2_.put(v)   &lt;br /&gt;
    &lt;br /&gt;
 class Print(Process): &lt;br /&gt;
     def __init__(self,instream):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         while 1: &lt;br /&gt;
             v=self.in_.get() &lt;br /&gt;
             print v &lt;br /&gt;
             time.sleep(0.5) &lt;br /&gt;
      &lt;br /&gt;
 def q():   &lt;br /&gt;
     return Channel()   &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 class Fib2(Process): &lt;br /&gt;
     def __init__(self,instream,outstream,printstream): &lt;br /&gt;
         Process.__init__(self) &lt;br /&gt;
         d1c2=instream&lt;br /&gt;
         c2d2=q()   &lt;br /&gt;
         d2p=printstream &lt;br /&gt;
         d2plus=outstream&lt;br /&gt;
         c2=Cons(1,d1c2,c2d2)   &lt;br /&gt;
         d2=Dup(c2d2,d2plus,d2p)   &lt;br /&gt;
         self.ps=[c2,d2] &lt;br /&gt;
         self.out_=d2p &lt;br /&gt;
     def run(self): &lt;br /&gt;
         ParProcess(self.ps).run() &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;:&lt;br /&gt;
     d1c2=NetToOne(MYADDR)&lt;br /&gt;
     d2plus=OneToNet(YOURADDR)&lt;br /&gt;
     outq=q() &lt;br /&gt;
     f=Fib2(d1c2,d2plus,outq) &lt;br /&gt;
     ParProcess([f,Print(outq)]).run() &lt;br /&gt;
----&lt;br /&gt;
 #rfib1.py&lt;br /&gt;
 #Copyright 2003 June Kim &amp;amp;lt;juneaftn at hanmail dot net&amp;amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 from csp import *&lt;br /&gt;
 &lt;br /&gt;
 YOURADDR=(&amp;#039;localhost&amp;#039;,8121)&lt;br /&gt;
 MYADDR=(&amp;#039;localhost&amp;#039;,8142)&lt;br /&gt;
        &lt;br /&gt;
 class Cons(Process):   &lt;br /&gt;
     def __init__(self,n,instream,outstream):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.n=n   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
         self.out_=outstream   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         self.out_.put(self.n)   &lt;br /&gt;
         while True:   &lt;br /&gt;
             v=self.in_.get()   &lt;br /&gt;
             self.out_.put(v)   &lt;br /&gt;
                            &lt;br /&gt;
 class Plus(Process):   &lt;br /&gt;
     def __init__(self,outstream,istream1,istream2):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.out_=outstream   &lt;br /&gt;
         self.in1_=istream1   &lt;br /&gt;
         self.in2_=istream2   &lt;br /&gt;
     def run(self):     &lt;br /&gt;
         while 1:   &lt;br /&gt;
             v1=self.in1_.get()   &lt;br /&gt;
             v2=self.in2_.get()   &lt;br /&gt;
             self.out_.put(v1+v2)   &lt;br /&gt;
    &lt;br /&gt;
 class Dup(Process):   &lt;br /&gt;
     def __init__(self,instream,ostream1,ostream2):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
         self.out1_=ostream1   &lt;br /&gt;
         self.out2_=ostream2   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         while 1:   &lt;br /&gt;
             v=self.in_.get()   &lt;br /&gt;
             self.out1_.put(v)   &lt;br /&gt;
             self.out2_.put(v)   &lt;br /&gt;
    &lt;br /&gt;
 class Print(Process): &lt;br /&gt;
     def __init__(self,instream):   &lt;br /&gt;
         Process.__init__(self)   &lt;br /&gt;
         self.in_=instream   &lt;br /&gt;
     def run(self):   &lt;br /&gt;
         while 1: &lt;br /&gt;
             v=self.in_.get() &lt;br /&gt;
             print v &lt;br /&gt;
             time.sleep(0.5) &lt;br /&gt;
      &lt;br /&gt;
 def q():   &lt;br /&gt;
     return Channel()   &lt;br /&gt;
  &lt;br /&gt;
 class Fib1(Process): &lt;br /&gt;
     def __init__(self,instream,outstream): &lt;br /&gt;
         Process.__init__(self) &lt;br /&gt;
         c1d1=q()&lt;br /&gt;
         d1c2=outstream&lt;br /&gt;
         d2plus=instream&lt;br /&gt;
         plusc1=q()   &lt;br /&gt;
         d1plus=q()   &lt;br /&gt;
         c1=Cons(1,plusc1,c1d1)   &lt;br /&gt;
         d1=Dup(c1d1,d1plus,d1c2)   &lt;br /&gt;
         plus=Plus(plusc1,d1plus,d2plus) &lt;br /&gt;
         self.ps=[c1,d1,plus] &lt;br /&gt;
     def run(self): &lt;br /&gt;
         ParProcess(self.ps).run() &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;:&lt;br /&gt;
     d1c2=OneToNet(YOURADDR)&lt;br /&gt;
     d2plus=NetToOne(MYADDR)&lt;br /&gt;
     f=Fib1(d2plus,d1c2)&lt;br /&gt;
     f.run()&lt;br /&gt;
----&lt;br /&gt;
ToyProblems 때 잠깐 들어본 적이 있는데.. 한번 돌려봐야겠다 - [[임인택]]&lt;br /&gt;
----&lt;br /&gt;
[[데블스캠프2003/둘째날]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>