python 开启进程的两种方式

69 阅读1分钟
#方式一:
from multiprocessing import Process
import time

def task(name):
    print('%s is running' %name)
    time.sleep(3)
    print('%s is done' %name)

if __name__ == '__main__':
    # Process(target=task,kwargs={'name':'子进程1'})
    p=Process(target=task,args=('子进程1',))
    p.start() #仅仅只是给操作系统发送了一个信号

    print('主')

#方式二
from multiprocessing import Process
import time

class MyProcess(Process):
    def __init__(self,name):
        super().__init__()
        self.name=name

    def run(self):
        print('%s is running' %self.name)
        time.sleep(3)
        print('%s is done' %self.name)


if __name__ == '__main__':
    p=MyProcess('子进程1') # 生成一个子进程对象 p
    p.start()
    print('主')
    print('sdf')
    p.terminate() # 发送终止信号给目标进程
    p.join() # 终止进程这个信号的处理和进程的实际终止可能需要一些时间。这是因为进程需要处理收到的信号并执行清理操作,比如释放资源、关闭文件句柄等。
            # 所以要调用p.join() 等待进程终止
    p.close()