Python语言,Linux下进程的创建,Windows下进程的创建

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:需要传的字典参数

猜你喜欢

转载自blog.csdn.net/qq_36045385/article/details/81301639