KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm a bit puzzled about how to write asynchronous code in python/twisted. Suppose (for arguments sake) I am exposing a function to the world that will take a number and return True/False if it is prime/non-prime, so it looks vaguely like this: def IsPrime(numberin): for n in range(2,numberin): if numberin % n == 0: return(False) return(True) (just to illustrate). Now lets say there is a webserver which needs to call IsPrime based on a submitted value. This will take a long time for large numberin . If in the meantime another user asks for the primality of a small number, is there a way to run the two function calls asynchronously using the reactor/deferreds architecture so that the result of the short calc gets returned before the result of the long calc? I understand how to do this if the IsPrime functionality came from some other webserver to which my webserver would do a deferred getPage, but what if it's just a local function? i.e., can Twisted somehow time-share between the two calls to IsPrime, or would that require an explicit invocation of a new thread? Or, would the IsPrime loop need to be chunked into a series of smaller loops so that control can be passed back to the reactor rapidly? Or something else?
Tags (comma-separated)
Save Edits
Cancel