一 进程创建的两种方式

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('主进程')

并发编程 ~~~ 多进程~~~进程创建的两种方式, 进程pid, 验证进程之间的空间隔离, 进程对象join方法, 进程对象其他属性的更多相关文章

  1. python 之 并发编程(开启子进程的两种方式,进程对象的属性)

    第九章并发编程 同一个程序执行多次是多个进程 import time import os ​ print('爹是:',os.getppid()) #父进程PID,(pycharm) print('me ...

  2. python 并发编程 多线程 开启线程的两种方式

    一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二 开启线程的两种方式 第一种 每造一个进程,默认有一个线程,就是 ...

  3. java中创建多线程两种方式以及实现接口的优点

    多线程创建方式有两种 创建线程的第一种方式.继承Thread类 1.继承Thread类 2.重写Thread类中的run方法--目的将自定义代码存储在run方法.让线程执行3.调用线程的start() ...

  4. Java线程创建的两种方式

    java多线程总结一:线程的两种创建方式及优劣比较 (一)---之创建线程的两种方式 java实现多线程的两种方法的比较

  5. java多线程机制1(线程创建的两种方式)

    进程:正在运行的程序.(即程序在内存中开辟了一片空间) 线程:是进程的执行单元. 一个进程至少包含了一个多个线程. 多线程是不是可以提高效率:多线程可以合理的利用系统的资源,提高效率是相对的.因为cp ...

  6. :Spring-06 -AOP [面向切面编程] -配置异常通知的两种方式--AspectJ 方式 -Schema-based 方式

    三.配置异常通知的步骤(AspectJ 方式) 1.只有当切点报异常才能触发异常通知 2.在spring 中有AspectJ 方式提供了异常通知的办法 3.实现步骤: 3.1新建类,在类写任意名称的方 ...

  7. SqlServer 创建数据库两种方式

    一个SqlServer 数据库实例大概可以创建三万多个数据库. 创建数据库的第一种方式:SqlServer Management Studio管理工具进行可视化创建. 1).打开数据库管理工具,在&q ...

  8. python进程开启的两种方式

    一.进程 1.1.方式一 from multiprocessing import Process import time #方式一 def task(name): print(f"my na ...

  9. 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

    (1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...

随机推荐

  1. IT兄弟连 HTML5教程 CSS3属性特效 文字描边

    用CSS3实现的文字描边效果,一个CSS3文字特效实例,字体可以自己随意改,字体颜色也可以自己改.IE9以下浏览器无效果,所以提醒大家测试时候要使用Google Chrome.-webkit-text ...

  2. Python - 文件分发小程序

    一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...

  3. [springMvc]常见配置

    [springMvc]常见配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...

  4. 6、netty第五个例子,使用websocket来通讯

    websocket中,可以支持双向的数据通信.其中所有的数据格式,都是以帧的形式来传递. initializer import io.netty.channel.ChannelInitializer; ...

  5. 【Spring Cloud】Spring Cloud Config 实现分布式配置中心

    Spring Cloud Config 实现分布式配置中心 一.分布式配置中心 分布式系统中,往往拥有大量的服务应用,而每个应用程序都需要有对应的配置文件来协助完成服务环境初始化.运行.因此生产了大量 ...

  6. 【Java基础】Annotation 的本质和自定义实现

    Java 中注解的实现原理 一.引言 在 Java5 之前,利用 xml 进行配置是各大框架的常规操作,这种方式可以实现松耦合并完成框架中几乎所有需要的配置,但随着项目的扩展,xml 文件本身的内容将 ...

  7. 手机投屏工具与HOSTS切换工具

    ApowerMirror windows -->switchhosts

  8. Object-defineProperty ES5

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象. Object.defineProperty(obj, prop, ...

  9. js里面的键盘事件对应的码值

    键盘事件对应的码值keyCode 8 = BackSpace BackSpacekeyCode 9 = Tab TabkeyCode 12 = ClearkeyCode 13 = EnterkeyCo ...

  10. python __iter__和__getitem__区别

    __getitem__ 单独实现这个魔法函数,可以让这个类成为一个可迭代的对象,并且可以通过使用下标获取类中元素值下标的元素 class Library(object): def __init__(s ...