2. 进程之间是相互独立的
3. 计算密集的时候适合用多进程
3. 进程消耗资源
进程之间相互独立
- import multiprocessing
- g_num = 0
- def update():
- global g_num
- for i in range(10):
- g_num += 1
- def reader():
- print(g_num)
- if __name__ == '__main__':
- p1 = multiprocessing.Process(target=update)
- p2 = multiprocessing.Process(target=reader)
- p1.start()
- p2.start()
进程池
- import multiprocessing
- from multiprocessing import Pool
- import time
- import threading
- g_num = 0
- def test1(n):
- for i in range(n):
- time.sleep(1)
- print('test1', i)
- def test2(n):
- for i in range(n):
- time.sleep(1)
- print('test2', i)
- def test3(n):
- for i in range(n):
- time.sleep(1)
- print('test3', i)
- def test4(n):
- for i in range(n):
- time.sleep(1)
- print('test4', i)
- if __name__ == '__main__':
- pool = Pool(3)#把进程声明出来括号里不写东西说明无限制,如果写数字,就是最大的进程数
- pool.apply_async(test1,(10,))#用pool去调用函数test1,参数为10格式为(10,)
- pool.apply_async(test2,(10,))#用pool去调用函数test2,参数为10格式为(10,)
- pool.apply_async(test3,(10,))#用pool去调用函数test3,参数为10格式为(10,)
- pool.apply_async(test4,(10,))#用pool去调用函数test4,参数为10格式为(10,)
- pool.close()#close必须在join的前面
- pool.join()