This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author hudson
Recipients docs@python, hudson
Date 2014-05-13.20:13:23
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1400012003.54.0.605655314952.issue21501@psf.upfronthosting.co.za>
In-reply-to
Content
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)
History
Date User Action Args
2014-05-13 20:13:23hudsonsetrecipients: + hudson, docs@python
2014-05-13 20:13:23hudsonsetmessageid: <1400012003.54.0.605655314952.issue21501@psf.upfronthosting.co.za>
2014-05-13 20:13:23hudsonlinkissue21501 messages
2014-05-13 20:13:23hudsoncreate