1.Linux下进程的创建
#encoding=utf-8
import os
import time
sonflagid=os.fork()
num=10
if sonflagid==0:
print("子",os.getpid(),"父",os.getppid())
global num
num+=1
print(num)
else:
global num
time.sleep(1)
print("父", os.getpid(), "子", sonflagid)
print("都会输出吗")
print(num)
解释:调用os.fork()产生一个子进程,返回值赋值给sonflagid,子进程返回值为0,父进程返回值为子进程pid。所以判断返回值就可以判断是子进程还是父进程。利用os.getpid()获取当前pid值。num变量不会在进程间公用,也就是不是全局变量,尽管加global也不能共享。
2.Windows下进程的创建
#encoding=utf-8 import os from multiprocessing import Process from time import sleep def sonpro(hi,*listhi,**zidian): print("子进程%d"%os.getpid(),hi) print("其中列表参数为",listhi) print("元组为",zidian) if __name__=="__main__": print("父进程:%d"% os.getpid()) p=Process(target=sonpro,args=("hello word",[1,2,3,4]),kwargs={"name":"nihao","pwd":"123456"}) print('子进程将要执行') p.start() sleep(1) p.join() print('子进程已结束')
解释:windows下不能用os.fork(),但可以用multiprocessing模块,先导入模块,然后利用Process来声明定义一个子进程。process()括号中包括:
target子进程要调用的函数
args:需要传进去的元组参数
kwargs:需要传的字典参数