一.进程的两种调用方式
进程的调用方式类似线程
--直接调用自定义的目标函数
from multiprocessing import Process import time def myThreading(): time.sleep(2) print('子线程正在运行',time.ctime()) def myThreading1(): time.sleep(4) print('子线程1正在运行',time.ctime()) if __name__ == '__main__': q = Process(target=myThreading) q1 = Process(target=myThreading1) # q.daemon # q1.daemon q.start() q1.start() # q.join() # q1.join() print('主线程正在运行',time.ctime())
--继承父类并改写其run函数
from multiprocessing import Process import time class MyProcess(Process): def __init__(self): super(MyProcess, self).__init__() #self.name = name def run(self): time.sleep(1) print ('hello', self.name,time.ctime()) if __name__ == '__main__': p_list=[] for i in range(3): p = MyProcess() p.start() p_list.append(p) for p in p_list: p.join() print('end')
多个进程之间使用的资源不同,内存地址自然不同
# from multiprocessing import Process # n=100 #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了 # def work(): # global n # n=0 # print('子进程内: ',n) # # #进程直接的内存空间是隔离的 # if __name__ == '__main__': # p=Process(target=work) # p.start() # print('主进程内: ',n)
未完待续。。。。。线程队列,进程池