プロセスの作成&ゾンビ&孤立

まず、二つの方法で子プロセスを作成して開きます

1.1方法1

#单个进程
from multiprocessing import Process
import time

def Text(): print('我是一个子进程') print('我的进程开始了') time.sleep(2) print('我的进程结束了') if __name__ == '__main__': #windows下必须要写这一句,不然会报错 p = Process(target = Text) #实例化产生一个对象 p.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系 time.sleep(5) print('我是主进程,我要结束了')
#多个进程
from multiprocessing import Process
import time

def Text(x): print(f'我是子进程{x}') print(f'{x}的进程开始了') time.sleep(2) print(f'{x}的进程结束了') if __name__ == '__main__': #windows下必须要写这一句,不然会报错 p1 = Process(target = Text,args=('yjy',)) #实例化产生一个对象 子进程1 p2 = Process(target = Text,args=('ypp',)) #实例化产生一个对象 子进程2 p1.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系 p2.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系 time.sleep(5) print('我是主进程,我要结束了')

1.2第二の方法

from  multiprocessing import Process
import time

class Text(Process): #定义一个类,让他继承Process def __init__(self,name): #重写__init__ super().__init__() #继承父类的__init__方法 self.name = name def run(self): #定义一个函数 print(f'子进程的姓名为{self.name},子进程开始') time.sleep(2) print(f'{self.name}进程结束') if __name__ == '__main__': p = Text('yjy') p.start() #通知操作系统子进程开始 print('主进程结束')

第二に、メモリ空間検証プロセス分離


from multiprocessing import Process
import time

x = 0  #定义一个变量x def Check(): global x x = 100 print(f'子进程的x:{x}') if __name__ == '__main__': p = Process(target=Check) p.start() print(f'父进程的x:{x}') ----------------------------------------------------------------------------------- 父进程的x:0 子进程的x:100

X xと子は、親プロセスは、2つの互いに独立して処理していることを示す、値ではなく、プロセス!

第三に、ゾンビプロセスと孤立


ゾンビプロセス(有害):子プロセスの終了は、すべてを解放していないとき、彼は、このいわゆるプロセスの死者がきれいに死ななかったことを確認するために、親のための彼のpid(同様の識別番号)を残しますこれはゾンビプロセスであり、彼は親プロセスを待ち、最終的に処分する彼を置きます

孤立(無害):親プロセスは終了しますが、子供が孤立となるよう、それは、1つ以上の子プロセスがまだ実行されているのです。孤児プロセスは、それらにコレクションのinitプロセスの完了状況によってプロセス(工程1)の採用はinitされます。

1.1方法1

#单个进程
from multiprocessing import Process
import time

def Text(): print('我是一个子进程') print('我的进程开始了') time.sleep(2) print('我的进程结束了') if __name__ == '__main__': #windows下必须要写这一句,不然会报错 p = Process(target = Text) #实例化产生一个对象 p.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系 time.sleep(5) print('我是主进程,我要结束了')
#多个进程
from multiprocessing import Process
import time

def Text(x): print(f'我是子进程{x}') print(f'{x}的进程开始了') time.sleep(2) print(f'{x}的进程结束了') if __name__ == '__main__': #windows下必须要写这一句,不然会报错 p1 = Process(target = Text,args=('yjy',)) #实例化产生一个对象 子进程1 p2 = Process(target = Text,args=('ypp',)) #实例化产生一个对象 子进程2 p1.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系 p2.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系 time.sleep(5) print('我是主进程,我要结束了')

1.2第二の方法

from  multiprocessing import Process
import time

class Text(Process): #定义一个类,让他继承Process def __init__(self,name): #重写__init__ super().__init__() #继承父类的__init__方法 self.name = name def run(self): #定义一个函数 print(f'子进程的姓名为{self.name},子进程开始') time.sleep(2) print(f'{self.name}进程结束') if __name__ == '__main__': p = Text('yjy') p.start() #通知操作系统子进程开始 print('主进程结束')

第二に、メモリ空間検証プロセス分離


from multiprocessing import Process
import time

x = 0  #定义一个变量x def Check(): global x x = 100 print(f'子进程的x:{x}') if __name__ == '__main__': p = Process(target=Check) p.start() print(f'父进程的x:{x}') ----------------------------------------------------------------------------------- 父进程的x:0 子进程的x:100

X xと子は、親プロセスは、2つの互いに独立して処理していることを示す、値ではなく、プロセス!

第三に、ゾンビプロセスと孤立


ゾンビプロセス(有害):子プロセスの終了は、すべてを解放していないとき、彼は、このいわゆるプロセスの死者がきれいに死ななかったことを確認するために、親のための彼のpid(同様の識別番号)を残しますこれはゾンビプロセスであり、彼は親プロセスを待ち、最終的に処分する彼を置きます

孤立(無害):親プロセスは終了しますが、子供が孤立となるよう、それは、1つ以上の子プロセスがまだ実行されているのです。孤児プロセスは、それらにコレクションのinitプロセスの完了状況によってプロセス(工程1)の採用はinitされます。

おすすめ

転載: www.cnblogs.com/lulingjie/p/11529097.html