多任务编程-进程

##进程
import os
import signal
signal.signal(signal.SIGCHLD, signal.SIG_IGN)
#signal防止僵尸进程
# 其他方法:1.父进程内pid,status=os.wait() 2.子进程内创建二级子进程(父退出os._exit(0)/sys.exit('退出'),子变孤儿执行)
pid=os.fork()
if pid==0:
print('子进程')
elif pid>0:
print('父进程')
elif pid<0:
print('创建子进程失败')
>注意
>>* 子进程会复制父进程全部内存空间,从fork下一句开始执行。
>>* 父子进程各自独立运行,运行顺序不一定。
>>* 利用父子进程fork返回值的区别,配合if结构让父子进程执行不同的内容几乎是固定搭配。
>>* 父子进程有各自特有特征比如PID PCB 命令集等。
>>* 父进程fork之前开辟的空间子进程同样拥有,父子进程对各自空间的操作不会相互影响。


from multiprocessing import Process
def function(参数):
pass
p=Process(target=function,args=(参数,))
p.daemon(True) #父进程退出,子进程退出
p.start()
p.join()


from multiprocessing import Pool

def func(a):
pass
p = Pool()
p.apply_async(func, args=('a',))
p.close()
p.join()

from multiprocessing import Queue
q = Queue()
q.put()
q.get()
q.close()

猜你喜欢

转载自www.cnblogs.com/chenlulu1122/p/11888629.html