Steve Foley added the comment: sorry! this is the correct version ;-)
------------------------------------------- import mmap, os, select NUM_CHILDREN = 30 MSG_LEN = 9 BUF_LEN = NUM_CHILDREN * MSG_LEN buf = mmap.mmap(-1, BUF_LEN) p = select.poll() def write_buffer(i): msg = '%s\t%d\n' % (i, os.getpid()) offset = MSG_LEN * i buf.seek(offset) buf.write(msg) def child(i, pipeout): write_buffer(i) os.write(pipeout, 'OK\0'.encode()) os._exit(0) def fork(i, p): pipein, pipeout = os.pipe() if os.fork() == 0: child(i, pipeout) else: p.register(pipein) def loop(msgs, p): msgs = NUM_CHILDREN while msgs: for fd, event in p.poll(): p.unregister(fd) msgs = msgs - 1 for i in range(NUM_CHILDREN): fork(i, p) loop(NUM_CHILDREN, p) buf.seek(0) print buf.read(BUF_LEN) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue21501> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com