[pypy-dev] fiber support

Maciej Fijalkowski fijall at gmail.com
Tue Oct 17 15:09:07 EDT 2017


Hi David.

You're probably completely aware that such calls (using cpyext) would
completely kill performance, right? I didn't look in detail, but in
order to get performance, you would need to write such calls using
cffi.

Best regards,
Maciej Fijalkowski

On Mon, Oct 16, 2017 at 7:18 PM, David Callahan <dcallahan at fb.com> wrote:
> folly:fibers  (https://github.com/facebook/folly/tree/master/folly/fibers )
> is a C++ package for lightweight, cooperatively scheduled threads.  We have
> an application which extends this to CPython by adding the following
> save/restore code around task function invocation:
>
>
>
>       auto tstate = PyThreadState_Get();
>
>       CHECK_NOTNULL(tstate);
>
>       auto savedFrame = tstate->frame;
>
>       auto savedExcType = tstate->exc_type;
>
>       auto savedExcValue = tstate->exc_value;
>
>       auto savedExcTraceback = tstate->exc_traceback;
>
>       func();
>
>       tstate->frame = savedFrame;
>
>       tstate->exc_type = savedExcType;
>
>       tstate->exc_value = savedExcValue;
>
>       tstate->exc_traceback = savedExcTraceback;
>
>
>
> (here func is a boost::python::object)
>
>
>
> This does not work in PyPy 5.9 immediately because the thread state object
> does not expose these fields nor are there accessor methods.
>
>
>
> Is there a way to get similar effect in PyPy?
>
>
>
> Thanks
>
> david
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> pypy-dev mailing list
> pypy-dev at python.org
> https://mail.python.org/mailman/listinfo/pypy-dev
>


More information about the pypy-dev mailing list