Metadata-Version: 1.0
Name: caine
Version: 0.0.2
Summary: supporting actors offer concurrent inbox processing
Home-page: https://github.com/will-weiss/caine/
Author: Will Weiss
Author-email: will.weiss1230@gmail.com
License: http://www.apache.org/licenses/LICENSE-2.0.html
Description: caine
        =====
        
        supporting actors offer concurrent inbox processing
        
        Install
        ~~~~~~~
        
        .. raw:: html
        
           <pre><code>pip install caine</code></pre>
        
        Usage
        ~~~~~
        
        .. raw:: html
        
           <pre><code>from caine import SupportingActor
        
           def print_square(message, instance_attributes):
               print "%s says %s squared is: %s" %(instance_attributes['name'] , message, message**2)
        
           square_printing_actor = SupportingActor(receive = print_square, timeout = 5, name = 'Bob')
        
           # Call an instance of SupportingActor to commence receiving messages
           square_printing_actor()
        
           for i in xrange(1,11):
               square_printing_actor.inbox.put(i)
        
           # Output
           # ------
           # Bob says 1 squared is: 1
           # Bob says 2 squared is: 4
           # Bob says 3 squared is: 9
           # Bob says 4 squared is: 16
           # Bob says 5 squared is: 25
           # Bob says 6 squared is: 36
           # Bob says 7 squared is: 49
           # Bob says 8 squared is: 64
           # Bob says 9 squared is: 81
           # Bob says 10 squared is: 100
           # Inbox processing done.</code></pre>
        
        More Horsepower
        ~~~~~~~~~~~~~~~
        
        .. raw:: html
        
           <pre><code>from caine import SupportingCast
           import time
        
           def print_square(message, actor_attributes):
               import random
               time.sleep(random.randint(2,4))
               print "Actor #%s says %s squared is: %s" %(actor_attributes['actor_id'], message, message**2)
        
           square_printing_cast = SupportingCast(receive = print_square, timeout = 5, num = 3)
        
           # Call an instance of SupportingCast to commence receiving messages with each of its actors
           square_printing_cast() 
        
           for i in xrange(1,11):
               square_printing_cast.inbox.put(i)
        
           # Output
           # ------
           # Actor #2 says 3 squared is: 9
           # Actor #0 says 2 squared is: 4
           # Actor #1 says 1 squared is: 1
           # Actor #1 says 6 squared is: 36
           # Actor #2 says 4 squared is: 16
           # Actor #0 says 5 squared is: 25
           # Actor #1 says 7 squared is: 49
           # Actor #2 says 8 squared is: 64
           # Actor #1 says 10 squared is: 100
           # Actor #0 says 9 squared is: 81
           # Inbox processing done.</code></pre>
        
        Other Functions
        ~~~~~~~~~~~~~~~
        
        .. raw:: html
        
           <pre><code>square_printing_cast() 
        
           for i in xrange(11,21):
               square_printing_cast.inbox.put(i)
        
           square_printing_cast.cut() # Items put in inbox after this will not be processed
        
           # These items will not be processed and will remain in the inbox
           for i in xrange(21,31):
               square_printing_cast.inbox.put(i)
        
           # Output
           # ------
           # Actor #1 says 11 squared is: 121
           # Actor #0 says 12 squared is: 144
           # Actor #2 says 13 squared is: 169
           # Actor #1 says 14 squared is: 196
           # Actor #0 says 15 squared is: 225
           # Actor #2 says 16 squared is: 256
           # Actor #1 says 17 squared is: 289
           # Actor #0 says 18 squared is: 324
           # Actor #2 says 19 squared is: 361
           # Actor #1 says 20 squared is: 400
           # Inbox processing done.</code></pre>
        
        
Platform: UNKNOWN
