[Stackless] multiprocessing module and stackless threads

Robert Babiak rbabiak at gmail.com
Fri Jan 3 04:38:15 CET 2014


Thanks.

FYI I am a ex CCPer. :)

On 1/2/14, Richard Tew <richard.m.tew at gmail.com> wrote:
> Monkey-patching is simply replacing the low level operations (like the
> socket module and the select.select function and the time.sleep
> function and so forth).  These normally block the whole thread (and
> therefore scheduler) until the operation is complete.
>
> So you write some code to import these modules and replace attributes
> and objects with one's that just block the calling tasklet.  The
> tasklet is either awakened by some non-blocking method or callback or
> simply farming the work off to another thread transparently, when the
> operation completes.
>
> Only you don't need to do this monkey patching yourself, because
> Kristjan has released and updates the source code to a small library
> that CCP uses in some projects - stacklesslib.
>
> You can find it on bitbucket:
>
> https://bitbucket.org/stackless-dev/stacklesslib
>
> Most third party code will just work if you do the monkeypatching
> first, then import the django or whatever, and then just go about your
> business.
>
> There are some cases where the code won't work, and you need to muck
> around a little to get it to work.  Graphical frameworks, perhaps like
> tkinter, pyqt, pygame and so forth often have main loops.  In those
> cases they need to run a call to the stackless scheduler, or have the
> scheduler do a secondary poll call of some sort, rather than running
> the main loop.
>
> I'm sure someone has already covered how to get django running with
> stackless somewhere.  I think CCP did it at some point.
>
> There's also a wikipedia page on monkeypatching if you are not
> familiar with the general concept:
>
> http://en.wikipedia.org/wiki/Monkey_patch
>
> Cheers,
> Richard.
>
> On 1/3/14, Robert Babiak <rbabiak at gmail.com> wrote:
>> Thanks Richard.
>>
>> but what do you mean by "monkeypatch it via stacklesslib" how/ where can
>> i
>> learn about MonkeyPatching?
>>
>> Then I would assume I would just run it as any other tasklet, which I
>> would
>> suspect would solve several problems i have with passing events, and SQL
>> calls on the wrong thread.
>>
>> - Rob
>>
>> ---------- Forwarded message ----------
>> From: Richard Tew <richard.m.tew at gmail.com>
>> To: The Stackless Python Mailing List <stackless at stackless.com>
>> Cc:
>> Date: Thu, 2 Jan 2014 11:58:39 +1300
>> Subject: Re: [Stackless] multiprocessing module and stackless threads
>> If your web server uses non-blocking IO, then it shouldn't be
>> necessary to have two schedulers.  I imagine with Django, you would
>> monkeypatch it via stacklesslib and it would then work in a
>> stackless-compatible non-blocking fashion.
>>
>> Stackless supports per-thread schedulers, and explicitly supports
>> interthread channel communication.  There is no explicit Stackless
>> support for multiprocessing.  If it opaquely uses threads, then it
>> works in the manner mentioning threads above.  If interthread channel
>> usage is not being used, then channels switch between tasklets on the
>> same Python thread.
>>
>> Cheers,
>> Richard.
>>
>> On 1/2/14, Robert Babiak <rbabiak at gmail.com> wrote:
>>> I have a question.
>>>
>>> Is it possible to use the multi processing module and stackless
>>> together?
>>>
>>> What i would like to do is have my application start a second process to
>>> handle the web server side of things, and the main thread control the
>>> main
>>> display.
>>>
>>> Can the two communicate via channels, or is the separate process
>> completely
>>> independant?
>>>
>>> If I don't use the multiprocessing and just use the threading module to
>>> make a dedicated web server thread. Would it be better to run two
>> stackless
>>> schedulers and have the one only run a single tasklet running the web
>>> server request loop?
>>>
>>> FYI: I am using DJANGO for the web server support, and the main display
>>> is
>>> a Open GL display. The main interaction to the display will be by web
>>> requests, but only some web calls will interact with the GL display.
>>>
>>> Suggestions and wisdom welcome.
>>>
>>> - robert
>>> --
>>> Life: Bah, I will worry about it when it is over.
>>>
>>
>> --
>> Life: Bah, I will worry about it when it is over.
>>
>
> _______________________________________________
> Stackless mailing list
> Stackless at stackless.com
> http://www.stackless.com/mailman/listinfo/stackless
>


-- 
Life: Bah, I will worry about it when it is over.



More information about the Stackless mailing list