Simple analysis of subprocesses generated using the fork () function in Python

Source: Internet
Author: User
This article mainly introduces the subprocesses generated using the fork () function in Python, and analyzes the execution sequence between the subprocesses and the parent process. For more information, see fork () in the python OS module () the function is used to generate sub-processes. the generated sub-processes are the images of the parent process, but they have their own address space. the sub-processes copy the parent process memory to themselves, the execution of two processes is independent of each other, and the execution sequence can be uncertain, random, and unpredictable. This is similar to the execution sequence of multiple threads.

import osdef child():  print 'A new child:', os.getpid()  print 'Parent id is:', os.getppid()  os._exit(0)def parent():  while True:    newpid=os.fork()    print newpid    if newpid==0:      child()    else:      pids=(os.getpid(),newpid)      print "parent:%d,child:%d"%pids      print "parent parent:",os.getppid()        if raw_input()=='q':      breakparent()

After we load the OS module, the fork () function in our parent function generates a sub-process. The return value of newpid has two, and one is 0, which indicates the sub-process, an integer greater than 0 is used to represent the parent process. This constant is the pid of the child process. the print statement clearly shows two return values. If fork () returns a negative value, it indicates that the sub-process is not successfully generated (this is not considered in this simple program ). If newpid = 0, it indicates that we enter the child process, that is, the child () function. in the child process, we output our own id and the parent process id. If the else statement is entered, it indicates that newpid> 0, we enter the parent process, in the parent process OS. getpid () gets its own id. fork () returns newpid, which indicates the id of the child process. at the same time, we output the id of the parent process. through the experiment, we can see that the execution sequence of if and else statements is uncertain. the execution sequence of sub-and parent processes is determined by the scheduling algorithm of the operating system.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.