import time
from multiprocessing import Process # 导入多线程模块classMyProcess(Process):def__init__(self,num):
super(MyProcess,self).__init__()
self.num=num
defrun(self):# 必须重写run函数
time.sleep(1)
print(self.pid) # 获取进程号
print(self.is_alive()) # 判断进程是否执行
print(self.num)
time.sleep(1)
if __name__ == '__main__':
p_list=[]
for i in range(10):
p = MyProcess(i) # 创建进程 #p.daemon=True # 是否设置为守护进程
p_list.append(p)
for p in p_list:
p.start() # 启动进程# for p in p_list:# p.join()
print('main process end')
进程同步
from multiprocessing import Process, Lock
import time
deff(l, i):
l.acquire() # 获取锁
time.sleep(1)
print('hello world %s' % i)
l.release() # 释放锁if __name__ == '__main__':
lock = Lock() # 进程锁for num in range(10):
Process(target=f, args=(lock, num)).start()
进程池
from multiprocessing import Process,Pool
import time,os
defFoo(i):
time.sleep(1)
print(i)
print("son",os.getpid())
return"HELLO %s"%i
defBar(arg):
print(arg)
# print("hello")# print("Bar:",os.getpid())if __name__ == '__main__':
pool = Pool(5) # 设定进程池的大小为5
print("main pid",os.getpid())
for i in range(100):
#pool.apply(func=Foo, args=(i,)) #同步接口#pool.apply_async(func=Foo, args=(i,))#回调函数callback: 就是某个动作或者函数执行成功后再去执行的函数
pool.apply_async(func=Foo, args=(i,),callback=Bar)
pool.close()
pool.join() # join与close调用顺序是固定的
print('end')