Chinaunix首页 | 论坛 | 博客
  • 博客访问: 330770
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 748
  • 用 户 组: 普通用户
  • 注册时间: 2018-09-21 18:49
文章分类

全部博文(72)

我的朋友

分类: Python/Ruby

2018-12-16 11:15:05

1. 一个程序运行起来之后,代码+用到的资源称之为进程,它是操作系统分配资 源的基本单位,不仅可以通过线程完成多任务,进程也是可以的
2. 进程之间是相互独立的
3. 计算密集的时候适合用多进程
3. 进程消耗资源

进程之间相互独立

  1. import multiprocessing
  2. g_num = 0

  3. def update():
  4.     global g_num
  5.     for i in range(10):
  6.         g_num += 1

  7. def reader():
  8.     print(g_num)

  9. if __name__ == '__main__':
  10.     p1 = multiprocessing.Process(target=update)
  11.     p2 = multiprocessing.Process(target=reader)
  12.     p1.start()
  13.     p2.start() 

进程池

  1. import multiprocessing
  2. from multiprocessing import Pool
  3. import time
  4. import threading
  5. g_num = 0
  6. def test1(n):
  7.     for i in range(n):
  8.         time.sleep(1)
  9.         print('test1', i)

  10. def test2(n):
  11.     for i in range(n):
  12.         time.sleep(1)
  13.         print('test2', i)
  14. def test3(n):
  15.     for i in range(n):
  16.         time.sleep(1)
  17.         print('test3', i)

  18. def test4(n):
  19.     for i in range(n):
  20.         time.sleep(1)
  21.         print('test4', i)

  22. if __name__ == '__main__':
  23.     pool = Pool(3)#把进程声明出来括号里不写东西说明无限制,如果写数字,就是最大的进程数
  24.     pool.apply_async(test1,(10,))#用pool去调用函数test1,参数为10格式为(10,)
  25.     pool.apply_async(test2,(10,))#用pool去调用函数test2,参数为10格式为(10,)
  26.     pool.apply_async(test3,(10,))#用pool去调用函数test3,参数为10格式为(10,)
  27.     pool.apply_async(test4,(10,))#用pool去调用函数test4,参数为10格式为(10,)
  28.     pool.close()#close必须在join的前面
  29.     pool.join()





阅读(2964) | 评论(0) | 转发(0) |
0

上一篇:python多线程和GIL

下一篇:python 协程

给主人留下些什么吧!~~