一 进程创建的两种方式

from multiprocessing import Process
import time def task(name):
print(f'{name} is running')
time.sleep(2)
print(f'{name} is gone') if __name__ == '__main__':
#在windows环境下, 开启进程必须在 __name__ == '__main__' 下面
p = Process(target=task,args=('常鑫',))
p.start()
print('主进程开始')
time.sleep(3)
print('主进程结束')
from multiprocessing import Process
import time
class MyProcess(Process):
def __init__(self,name):
super().__init__()
self.name = name def run(self):
print(f'{self.name} is running')
time.sleep(2)
print(f'{self.name} is gone') if __name__ == '__main__':
p = MyProcess('常鑫')
p.start() # 启动的是类里面的run方法
print('主进程')

二 进程pid

import os
import time
print(f'子进程:{os.getpid()}')
print(f'主(父)进程:{os.getppid()}')
time.sleep(50)

三 验证进程之间的空间隔离

from multiprocessing import Process
import time
name = '小虎'
lst = [1,2,3]
def task():
global name
name = '海狗'
lst.append(4)
print(f'子进程{name}')
print(f'子进程{lst}') if __name__ == '__main__':
p = Process(target=task)
p.start()
time.sleep(2)
print(f'主进程{name}')
print(f'主进程{lst}')
# 子进程海狗
# 子进程[1, 2, 3, 4]
# 主进程小虎
# 主进程[1, 2, 3]

主进程和子进程之间是隔离的

四 进程对象join方法

join让主进程等待子进程结束之后,在执行主进程.

from multiprocessing import Process
import time
def task(sec):
print('running')
time.sleep(sec)
print('gone') if __name__ == '__main__':
start_time = time.time()
p1 = Process(target= task,args=(1,))
p2 = Process(target= task,args=(2,))
p3 = Process(target= task,args=(3,)) p1.start()
p2.start()
p3.start() p1.join()
p2.join()
p3.join() print(time.time() - start_time)
# 优化上面代码:
lst =[]
for i in range(1,4):
p = Process(target=task,args=(i,))
lst.append(p)
p.start()
for k in lst:
k.join() print(time.time() - start_time)

五 进程对象其他属性

from multiprocessing import Process
import time def task(name):
print(f'{name}is running')
time.sleep(2)
print(f'{name}is gone') if __name__ == '__main__':
p = Process(target=task,args=('大黑',),name='进程1')
p.start()
time.sleep(1)
p.terminate() # 杀死子进程
p.join() # 让主进程等待子进程结束之后,在执行主进程.
print(p.is_alive()) # 判断子进程是不是还在运行
print(p.name) # 进程的名字
p.name = '小虎'
print(p.name)
print('主进程')

最新文章

  1. Bug库
  2. 利用wikipedia 的API实现对其内容的查询
  3. window 配置wnmp(转下整理 ,全)
  4. MySQL中MyISAM和InnoDB的区别
  5. C++之迭代器
  6. java 输入输出项目
  7. 如何利用OCS存取PHP session全局变量
  8. ie6/7/8中span右浮动折行问题的解决方案
  9. c#局域网文件搬移
  10. C# 线程更新UI
  11. C#怎么得到主机名,IP,MAC
  12. Android高级开发专题晋升班
  13. hihoCoder 1252 Kejin Game
  14. linux命令学习6-dpkg命令
  15. 【笔记】css 自定义select 元素的箭头样式
  16. JavaScript 原型的深入指南
  17. 《连连看》算法c语言演示(自动连连看)
  18. 【托业】【跨栏】TEST05
  19. JDBC-Oracle连接教程
  20. 教程+资源,python scrapy实战爬取知乎最性感妹子的爆照合集(12G)!

热门文章

  1. Oracle11g在虚拟机win7上的详细安装过程(包括win7在虚拟机上的安装)
  2. Power BI 概念及 国内版Pro 试用账户注册流程
  3. SpringBoot+idea搭建微服务简化流程
  4. 易优CMS:compare的基础用法
  5. nginx配置文件 http 强跳转 https
  6. s3c2440裸机-代码重定位(2.编程实现代码重定位)
  7. openstack-neutron安装与配置
  8. SpringCloud学习笔记(十一、SpringCloud总结)
  9. Hibernate session.save()实体类,主键增长问题
  10. 洛谷 P3805 【模板】manacher算法