[Python] Question regarding concurrent execution of processes using multiprocessing module

Discussão em 'Python' iniciado por Stack, Janeiro 19, 2025.

  1. Stack

    Stack Membro Participativo

    I was recently learning multiprocessing using Python. What I learned is that we use multiprocessing module in Python to achieve parallelism, which means that the processes are executed at the same time.

    But why below codes showing that there are a few milliseconds difference among the starting time of the four processes?

    from multiprocessing import Process
    import os, time, datetime, random, tracemalloc

    tracemalloc.start()
    children = 4 # number of child processes to spawn
    maxdelay = 6 # maximum delay in seconds

    def status():
    return ('Time: ' +
    str(datetime.datetime.now().time()) +
    '\t Malloc, Peak: ' +
    str(tracemalloc.get_traced_memory()))

    def child(num):
    delay = random.randrange(maxdelay)
    print(f"{status()}\t\tProcess {num}, PID: {os.getpid()}, Delay: {delay} seconds...")
    time.sleep(delay)
    print(f"{status()}\t\tProcess {num}: Done.")

    if __name__ == '__main__':
    print(f"Parent PID: {os.getpid()}")
    for i in range(children):
    proc = Process(target=child, args=(i,))
    proc.start()


    Below is the output:

    Parent PID: 16048
    Time: 09:52:47.014906 Malloc, Peak: (228400, 240036) Process 0, PID: 16051, Delay: 1 seconds...
    Time: 09:52:47.016517 Malloc, Peak: (231240, 240036) Process 1, PID: 16052, Delay: 4 seconds...
    Time: 09:52:47.018786 Malloc, Peak: (231616, 240036) Process 2, PID: 16053, Delay: 3 seconds...
    Time: 09:52:47.019398 Malloc, Peak: (232264, 240036) Process 3, PID: 16054, Delay: 2 seconds...

    Time: 09:52:48.017104 Malloc, Peak: (228434, 240036) Process 0: Done.
    Time: 09:52:49.021636 Malloc, Peak: (232298, 240036) Process 3: Done.
    Time: 09:52:50.022087 Malloc, Peak: (231650, 240036) Process 2: Done.
    Time: 09:52:51.020856 Malloc, Peak: (231274, 240036) Process 1: Done.


    Why the starting time of the processes differ? Isn't this against the definition of parallelism?

    Continue reading...

Compartilhe esta Página