Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #58357
| Subject | Re: multiprocessing: child process race to answer (forgot to Cc: the list) |
|---|---|
| From | William Ray Wing <wrw@mac.com> |
| Date | 2013-11-02 23:07 -0400 |
| References | <f71ef852-81ee-4ce6-beaa-17a881ed6d16@googlegroups.com> <mailman.1946.1383360757.18130.python-list@python.org> <e92096bb-f571-4a4f-9dcc-604e4cce4125@googlegroups.com> <6276BD6E-B0A2-4443-9274-E27BBC3C0152@mac.com> <CAH=v_kk=1DCUUBHmFAf3CUq8cf9t96YzR-nUVy4godXY4+05uw@mail.gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.1964.1383448097.18130.python-list@python.org> (permalink) |
[Multipart message — attachments visible in raw view] - view raw
On Nov 2, 2013, at 11:44 AM, Sherard Hall <smhall05@gmail.com> wrote: > Thank you for the response. Processing time is very important so I suspect having to write to disk will take more time than letting the other processes complete without finding the answer. So I did some profiling one process finds the answer in about 250ms, but since I can't stop the other processes, it takes about 800ms before I can use the answer. Do you recommend a global variable flag? Any other suggestions? > > On Nov 2, 2013 8:17 AM, "William Ray Wing" <wrw@mac.com> wrote: > On Nov 2, 2013, at 1:03 AM, smhall05 <smhall05@gmail.com> wrote: > > > On Friday, November 1, 2013 10:52:40 PM UTC-4, MRAB wrote: > >> On 02/11/2013 02:35, smhall05 wrote: > >> > >>> I am using a basic multiprocessing snippet I found: > >>> > >>> #----------------------------------------------------- > >>> from multiprocessing import Pool > >>> > >>> def f(x): > >>> return x*x > >>> > >>> if __name__ == '__main__': > >>> pool = Pool(processes=4) # start 4 worker processes > >>> result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously > >>> print result.get(timeout=1) > >>> print pool.map(f, range(10)) # prints "[0, 1, 4,..., 81]" > >>> #--------------------------------------------------------- > >>> > >>> I am using this code to have each process go off and solve the same problem, just with different inputs to the problem. I need to be able to kill all processes once 1 of n processes has come up with the solution. There will only be one answer. > >>> > >>> I have tried: > >>> > >>> sys.exit(0) #this causes the program to hang > >>> pool.close() > >>> pool.terminate > >>> > >> > >> Did you actually mean "pool.terminate", or is that a typo for > >> > >> "pool.terminate()"? > >> > >>> These still allow further processing before the program terminates. What else can I try? I am not able to share the exact code at this time. I can provide more detail if I am unclear. Thank you > >>> > > > > I am not sure to be honest, however it turns out that I can't use pool.terminate() because pool is defined in main and not accessible under my def in which I check for the correct answer. > > -- > > https://mail.python.org/mailman/listinfo/python-list > > So, the simplest solution to that situation is to have whichever subprocess that finds the correct answer set a flag which the calling process can check. Depending on your OS, that flag can be anything from setting a lock to something as simple as creating a file which the calling process periodically wakes up and looks for, maybe just a file in which the subprocess has written the answer. > > Bill > > -- > https://mail.python.org/mailman/listinfo/python-list Well, the multiprocessing library provides listeners and clients that wrap BSD style sockets and allow you to send (push) arbitrary python objects to a listener, i.e., the master. There might be something better that was OS specific, but this will keep it pure python. I've not tested it, but there is a simple example here on Stackoverflow: http://stackoverflow.com/questions/6920858/interprocess-communication-in-python -Bill
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
multiprocessing: child process race to answer smhall05 <smhall05@gmail.com> - 2013-11-01 19:35 -0700
Re: multiprocessing: child process race to answer MRAB <python@mrabarnett.plus.com> - 2013-11-02 02:52 +0000
Re: multiprocessing: child process race to answer smhall05 <smhall05@gmail.com> - 2013-11-01 22:03 -0700
Re: multiprocessing: child process race to answer William Ray Wing <wrw@mac.com> - 2013-11-02 08:17 -0400
Re: multiprocessing: child process race to answer Sherard Hall <smhall05@gmail.com> - 2013-11-02 11:44 -0400
Re: multiprocessing: child process race to answer (forgot to Cc: the list) William Ray Wing <wrw@mac.com> - 2013-11-02 23:07 -0400
Re: multiprocessing: child process race to answer cappleman@gmail.com - 2013-11-03 02:10 -0800
Re: multiprocessing: child process race to answer Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-11-03 10:24 +0000
csiph-web