According to documentation, select.select requires ints (file descriptors) or objects with parameterless function fileno() (which Connection objects created with Pipe() have got). I have even tried to do:

w, r = os.pipe()
read, _, _ = select.select([w, r], [], [])

but error was the same. Any ideads?

EDIT

Yes, currently i'm working on Windows, but it looks like i'll have to change platform ... Thanks for answers. I have this thoughts that on Windows those file descirptors might not work, but i wasn't sure. Now i know. Thanks!

You are calling select() with an array containing Connection objects as used by multiprocessing. (Btw, you were writing multiprocess in your source, but I guess it should be multiprocessing.) select(), however, cannot handle these.

Try using pipe1.fileno() etc. instead; this is a file number (an int) and select is perfectly capable of working with these.

EDIT:

If you are working on windows, file numbers are not supported by select() (bad luck). I cannot help then. Unless you would be willing to go multithreading and have one thread for each thing to wait on; that should also work on Windows.