Friday, February 19, 2010

create Defered function from non-asynchronous blocking code

def largeFibonnaciNumber():
Represent a long running blocking function by calculating
the TARGETth Fibonnaci number
TARGET = 10000

first = 0
second = 1

for i in xrange(TARGET - 1):
new = first + second
first = second
second = new

return second

from twisted.internet import threads, reactor

def fibonacciCallback(result):
Callback which manages the largeFibonnaciNumber result by
printing it out
print "largeFibonnaciNumber result =", result
# make sure the reactor stops after the callback chain finishes,
# just so that this example terminates

def run():
Run a series of operations, deferring the largeFibonnaciNumber
operation to a thread and performing some other operations after
adding the callback
# get our Deferred which will be called with the largeFibonnaciNumber result
d = threads.deferToThread(largeFibonnaciNumber)
# add our callback to print it out
print "1st line after the addition of the callback"
print "2nd line after the addition of the callback"

if __name__ == '__main__':

No comments:

Post a Comment