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 Offenbach
det...@die-offenbachs.de

Attachment: OpenPGP_0xBD1F26A5DA8A6150.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to