Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

[solved] how to make the Thread in opensesame and python

edited May 2016 in PyGaze

i need to make Thread in python to simultaneous released between sampler and eyetribe


  • edited 5:46AM


    Using threads is possible with the Python thread module. But it's usually not necessary, and not a good idea, to do this. If you explain in more detail what you want to accomplish, perhaps we could help you find a better solution. (Detail being the key word here.)


    There's much bigger issues in the world, I know. But I first have to take care of the world I know.

  • edited 5:46AM

    Hi guys,

    I'm also running into troubles trying to use multi threading with pygaze. I need multi threading because I want a process ruining in parallel that updates a variable with the current the current gaze. I then use this variable within several functions of my main code.

    If I try to do tracker.sample() within a parallell process I always get:

    [xcb] Unknown sequence number while processing queue
    [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
    [xcb] Aborting, sorry about that.
    python: ../../src/xcb_io.c:274: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.

    All my code is ok, because If I substitute that line with something simpler (like print wtv) everything works fine.

    An alternative would be to update current gaze variable at several points withing my main loop but I found that extremely inelegant.

    Any clues?

  • edited 5:46AM

    If I do event.getKeys("escape") (psychopy code) in a sepated thread, I also get the same problem.

    Does this ring you a bell?

  • edited May 2016

    Hi both,

    Not sure why you would want this to be done in a separate Thread. Within the EyeTribe (and other tracker's) implementation, there are already sub-Threads running to keep updated. This means your data will automatically be logged (without you having to actively do it), and it also means that any call to the sample method will give you the most recent sample. (So you can replace any reference to your gaze variable with a call to sample.)

    Why a separate Thread?



    PS: If you want a separate Process, a secondary question would be: Why a parallel Process, and why not a Thread? (Of course, the "Why use a separate Thread?" question still applies.)

Sign In or Register to comment.