James Hutchison <jamesghutchi...@gmail.com> added the comment:

This is an issue for me (Python 3.2). I have a custom pool that sends arguments 
for a function call over a pipe. I cannot send another pipe as an argument. 

Tim's workaround also does not work for me (win xp 32bit and 64bit)

>From what I can tell, you can only send a connection as a direct argument to a 
>function call. This limits what I can do because I cannot introduce new pipes 
>to a worker process after it is instantiated.

Using this code:

def main():
    from multiprocessing import Pipe, reduction
    i, o = Pipe()
    print(i);
    reduced = reduction.reduce_connection(i)
    print(reduced);
    newi = reduced[0](*reduced[1])
    print(newi);
    newi.send("hi")
    o.recv()

if __name__ == "__main__":
    main();

This is my output:

<read-write PipeConnection, handle 1760>
(<function rebuild_connection at 0x00FD4C00>, 
(('\\\\.\\pipe\\pyc-3156-1-q5wwnr', 1756, False), True, True))
<read-write Connection, handle 1720>
Traceback (most recent call last):
  File "H:\mti\secure\Flash\Reliability\Perl_Rel\Ambyx\James\bugs\test.py", 
line 47, in <module>
    main();
  File "H:\mti\secure\Flash\Reliability\Perl_Rel\Ambyx\James\bugs\test.py", 
line 43, in main
    newi.send("hi")
IOError: [Errno 10038] An operation was attempted on something that is not a 
socket

As you can see, the handle changes

----------
nosy: +Jimbofbx

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue4892>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to