一:开启进程的两种方式(*****)

#开启进程的方式一:
from multiprocessing import Process
import time def task(name):
print('%s is running' % name)
time.sleep(3)
print('%s is done' % name) # 在window系统上,开启子进程的操作必须放到if __name__ == '__main__'的子代码中
if __name__ == '__main__':
p = Process(target=task, args=('nuanxin',)) # Process(target=task,kwargs={'name':'nuanxin'})
p.start() # 只是向操作系统发送了一个开启子进程的信号
print('混世魔王')

终端打印:

子进程  is  running

子进程  is  done

Process finished with exit code 0

# 开启进程的方式二:
from multiprocessing import Process
import time class Myprocess(Process):
def __init__(self, name):
super().__init__()
self.name = name def run(self):
print('%s is runing' % self.name)
time.sleep(3)
print('%s is done' % self.name) # windows系统上,开启子进程的操作系统必须放到if __name__ == '__main__'的子代码中
if __name__ == '__main__':
p = Myprocess('nuanxin')
p.start() # 只是向操作系统发送了一个开启进程的信号
print('混世魔王')

终端打印:

子进程  is  running

子进程  is  done

Process finished with exit code 0

二:进程对象的join方法(*****)

# join:让主进程在原地等待,等待进程运行完毕,不会影响进程的执行
from multiprocessing import Process
import time def task(name, n):
print('%s is running' % name)
time.sleep(3)
print('%s is done' % name) if __name__ == '__main__':
p1 = Process(target=task, args=('子1', 1))
p2 = Process(target=task, args=('子2', 2))
p3 = Process(target=task, args=('子3', 3)) start = time.time()
p1.start()
p2.start()
p3.start()
time.sleep(5) p3.join() #
p1.join()
p2.join()
print('混世魔王', (time.time() - start)) # 5.027485609054565 5.029683589935303 5.025939464569092 start = time.time()
p_l = []
for i in range(1, 4):
p = Process(target=task, args=('子%s' % i, i))
p_l.append(p)
p.start() for p in p_l:
p.join()
print('混世魔王', (time.time() - start))

终端打印:

子进程  is  running

子进程  is  running

子进程  is  running

子进程  is  done

子进程  is  done

子进程  is  done

Process finished with exit code 0

三:进程对象之间内存空间隔离(*****)

进程和进程之间的空间不会互相干扰,没办法直接获取另一个进程空间里的数据,要获取只有一种办法,就是写到文件里面再获取

from multiprocessing import Process

n=100
def task():
global n
n=0 if __name__ == '__main__':
p=Process(target=task)
p.start()
p.join()
print(n)

Python 34(进程重点)的更多相关文章

  1. *****Python之进程线程*****

    Python之进程线程 Python的threading模块   并发编程: 操作系统:位于底层硬件与应用软件之间的一层. 工作方式:向下管理硬件,向上提供接口. 进程:资源管理单位(容器) 线程:最 ...

  2. Python:进程

    由于GIL的存在,python一个进程同时只能执行一个线程.因此在python开发时,计算密集型的程序常用多进程,IO密集型的使用多线程 1.多进程创建: #创建方法1:将要执行的方法作为参数传给Pr ...

  3. 【Python】使用Supervisor来管理Python的进程

    来源 : http://blog.csdn.net/xiaoguaihai/article/details/44750073     1.问题描述 需要一个python的服务程序在后台一直运行,不能让 ...

  4. python 守护进程 daemon

    python 守护进程 daemon # -*-coding:utf-8-*- import sys, os '''将当前进程fork为一个守护进程 注意:如果你的守护进程是由inetd启动的,不要这 ...

  5. Python之进程

    进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...

  6. Python的进程与线程--思维导图

    Python的进程与线程--思维导图

  7. Python之进程 3 - 进程池和multiprocess.Poll

    一.为什么要有进程池? 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗 ...

  8. {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll

    Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...

  9. Python守护进程和脚本单例运行

    Python 守护进程 守护进程简介 进程运行有时候需要脱离当前运行环境,尤其是Linux和Unix环境中需要脱离Terminal运行,这个时候就要用到守护进程.守护进程可以脱离当前环境要素来执行,这 ...

  10. python开发进程:共享数据&进程池

    一,共享数据 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合 通过消息队列交换数据.这样极大地减少了对使用锁定和其他同步手段的需求, 还可以扩展 ...

随机推荐

  1. js生成web安全色

    256色里有40种颜色在Macintosh和Windows里显示的效果不一样,所以能安全使用的只有216色. <!DOCTYPE HTML> <html> <head&g ...

  2. demo记录

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...

  3. MATLAB仿真学习笔记(一)

    一.Simulink概述 1.特点 simulink是对动态系统进行建模.仿真和综合分析的图形化软件,可以处理线性和非线性.离散.连续和混合系统,也可以处理单任务和多任务系统,并支持多种采样频率的系统 ...

  4. php第十三节课

    查询 <?php class DBDA{ public $host = "localhost"; //数据库地址 public $uid = "root" ...

  5. 7-13 航空公司VIP客户查询 (25 分)

    题意: 思路: 读完题目之后的第一思路就是用map将客户的id(string类型)与里程road(int类型)形成映射,然后直接用id查找添加里程或输出里程.但是400ms的限制妥妥的超时了.然后意识 ...

  6. Yii2开发技巧 使用类似闭包的方式封装事务

    在控制器中执行事务的时候,一般的代码如下: $transaction = Yii::$app->db->beginTransaction(); try { //一些业务代码 $transa ...

  7. 746. Min Cost Climbing Stairs(动态规划)

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...

  8. TypeError: CleanWebpackPlugin is not a constructor

    在项目中引入clean-webpack-plugin打包后报错 new CleanWebpackPlugin(), ^ TypeError: CleanWebpackPlugin is not a c ...

  9. nagios监控ganglia指标,并配置告警

    背景:nagios的监控插件在轻量级方面不如ganglia的gmond,且ganglia在指标监控方面尤其突出的优势,而nagios在配置告警方面也比较方便,正好可以弥补ganglia无法配置告警通知 ...

  10. Myeclipse学习总结(1)——Myeclipse优化配置

    作为企业级开发最流行的工具,用Myeclipse开发java web程序无疑是最合适的,java web前端采用jsp来显示,myeclipse默认打开jsp的视图有卡顿的现象,那么如何更改jsp默认 ...