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.)
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.
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?
Cheers,
Edwin
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.)
Comments
Hi,
Using threads is possible with the Python
threadmodule. 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.)Cheers,
Sebastiaan
Check out SigmundAI.eu for our OpenSesame AI assistant!
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?
If I do event.getKeys("escape") (psychopy code) in a sepated thread, I also get the same problem.
Does this ring you a bell?
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
samplemethod will give you the most recent sample. (So you can replace any reference to your gaze variable with a call tosample.)Why a separate Thread?
Cheers,
Edwin
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.)