[python 进阶] 进程和线程
Linux:
#!/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @virtualenv:workon
# @contact: 1040691703@qq.com
# @Desc:Code descripton
__author__ = '未昔/AngelFate'
__date__ = '2020/5/31 10:12'
import os
pid = os.fork() #这里将会创建一个子进程,返回值会是子进程PID值。
print('父子进程都会输出。') #这里没有判断语句,将会运行两次,一次是父进程,一次是子进程。
if pid > 0: #判断,父进程的返回值会大于0。
print('子进程的PID是%d,父进程的PID是%d'%(os.getpid(),os.getppid())) #getpid的获取当前进程的pid,如果子进程getpid的时候,会得到子进程的值,再子进程使用getppid的时候能够获取到父进程的pid。
else: #子进程的返回值则会永远是0
print('父进程的PID是%d'%os.getpid()) #当父进程使用getpid的时候获得的是父进程的pid。
注意: 进程值 PID 是不能重复的,类似于端口。系统会为每个进程会分配不同的 PID 进行区分不同的软件进程。并且父子进程会独立运行,互不干扰。而且父子进程的调用需要系统来调度,没有固定性。
WINDOWS:
#!/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @virtualenv:workon
# @contact: 1040691703@qq.com
# @Desc:Code descripton
__author__ = '未昔/AngelFate'
__date__ = '2020/5/31 10:20'
from multiprocessing import Process
import os
def run_proc(name):
print('运行子进程%s(%s)......'%(name,os.getpid()))
if __name__ == '__main__':
print('父进程%s'%os.getpid())
p = Process(target=run_proc,args=('test',))
print('子进程将开始')
p.start()
p.join()
print('子进程结束')
父进程10496
子进程将开始
运行子进程test(15560)......
子进程结束
Process finished with exit code 0