Issue with Eric7 and Parallel Processing

Jamie Riotto jamie.riotto at gmail.com
Fri Nov 17 14:50:40 GMT 2023


Detlev,
That did it! Thanks so much for tracking this down, as I rely on heavy
multiprocessing in most of my apps.
You're the best :-)
- jamie

On Fri, Nov 17, 2023 at 5:15 AM Detlev Offenbach <detlev at die-offenbachs.de>
wrote:

> Hi Jamie,
>
> I found another issue specific to the 'win32' platform. I changed the code
> and debugging and running your test script works over here. See attached
> file for changes to be applied.
>
> Regards,
> Detlev
> Am 16.11.23 um 23:39 schrieb Jamie Riotto:
>
> Ok, so I have Eric7 loaded into a virtual environment, 'eric7_qt6_venv',
> which has eric7-23.11(rev.e075C8fe07fd).
> I went to
> c:\Users\jamie\eric7_qt6_venv\Lib\site-packages\eric7\Debugger\DebuggerInterfacePython.py
> anc
> commented out the line:
>
> #self.__autoContinued.append(debuggerId)
>
> When I reran the script I submitted, I had the same behavior as before,
> i.e. no change. Did I miss something?
> - j
>
> On Thu, Nov 16, 2023 at 10:28 AM Detlev Offenbach <
> detlev at die-offenbachs.de> wrote:
>
>> Hi Jaimie,
>>
>> it is actually a one line change. If you visit
>> https://hg.die-offenbachs.homelinux.org/eric/rev/1e498581a094 you will
>> see, which line needs to be removed.
>>
>> Regards,
>> Detlev
>> Am 16.11.23 um 19:10 schrieb Jamie Riotto:
>>
>> Detlev,
>> Excuse my ignorance, but I'm not sure how to obtain a changeset through
>> mercurial. Is there an easy way?
>> - j
>>
>> On Thu, Nov 16, 2023 at 9:12 AM Detlev Offenbach <
>> detlev at die-offenbachs.de> wrote:
>>
>>> Hi,
>>>
>>> I just committed changeset 1e498581a094, which should fix the issue.
>>> Please give it a try and let me know. Otherwise, it will be contained in
>>> release 23.12 as is.
>>>
>>> Regards, Detlev
>>> Am 15.11.23 um 16:33 schrieb Jamie Riotto:
>>>
>>> import multiprocessing
>>> from time import time
>>> import random
>>>
>>>
>>> def parallelSim(job_queue, output_queue):
>>>     for data in iter(job_queue.get, 'STOP'):
>>>         choices = random.choices(data, k=10)
>>>         total = 0
>>>         for i, c in enumerate(choices):
>>>             sign = 1 if i%2==0 else -1
>>>             total += c * c * sign
>>>
>>>         output_queue.put(total)
>>>
>>> if __name__ == '__main__':
>>>     start_time = time()
>>>
>>>     job_queue = multiprocessing.Queue()
>>>     output_queue = multiprocessing.Queue()
>>>
>>>     # create some data
>>>     data = list(range(1, 1000))
>>>
>>>     # DEBUG
>>>     #numCPUs = multiprocessing.cpu_count()
>>>     numCPUs = 4
>>>     iterations = 10
>>>     numjobs = numCPUs * iterations
>>>
>>>     # load up the job queue
>>>     for sim in range(numjobs):
>>>         job_queue.put(data)
>>>
>>>     # add Stops to the job queue
>>>     for x in range(numCPUs):
>>>         job_queue.put('STOP')
>>>
>>>     serialDebug = False
>>>     if serialDebug is True:
>>>         # Debug the Parallel Process
>>>         parallelSim(job_queue, output_queue)
>>>
>>>     else:
>>>         # parallelize processing using a pool of processes
>>>         for i in range(numCPUs):
>>>             multiprocessing.Process(target=parallelSim, args=(job_queue,
>>> output_queue)).start()
>>>
>>>     results = []
>>>     for r in range(numjobs):
>>>         results.append(output_queue.get())
>>>
>>>     avg_result = sum(results) / numjobs
>>>     print("")
>>>     print(f'Average Results = {avg_result}')
>>>
>>>     end_time = time()
>>>     elapsed = end_time - start_time
>>>     print(f"Finished in: {elapsed:.3f} seconds")
>>>
>>> --
>>> Detlev Offenbachdetlev at die-offenbachs.de
>>>
>>> --
>> Detlev Offenbachdetlev at die-offenbachs.de
>>
>> --
> Detlev Offenbachdetlev at die-offenbachs.de
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/eric/attachments/20231117/ecf7b40a/attachment-0001.htm>


More information about the Eric mailing list