Python 34(进程重点)
一:开启进程的两种方式(*****)
#开启进程的方式一:
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(进程重点)的更多相关文章
- *****Python之进程线程*****
Python之进程线程 Python的threading模块 并发编程: 操作系统:位于底层硬件与应用软件之间的一层. 工作方式:向下管理硬件,向上提供接口. 进程:资源管理单位(容器) 线程:最 ...
- Python:进程
由于GIL的存在,python一个进程同时只能执行一个线程.因此在python开发时,计算密集型的程序常用多进程,IO密集型的使用多线程 1.多进程创建: #创建方法1:将要执行的方法作为参数传给Pr ...
- 【Python】使用Supervisor来管理Python的进程
来源 : http://blog.csdn.net/xiaoguaihai/article/details/44750073 1.问题描述 需要一个python的服务程序在后台一直运行,不能让 ...
- python 守护进程 daemon
python 守护进程 daemon # -*-coding:utf-8-*- import sys, os '''将当前进程fork为一个守护进程 注意:如果你的守护进程是由inetd启动的,不要这 ...
- Python之进程
进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...
- Python的进程与线程--思维导图
Python的进程与线程--思维导图
- Python之进程 3 - 进程池和multiprocess.Poll
一.为什么要有进程池? 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗 ...
- {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll
Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...
- Python守护进程和脚本单例运行
Python 守护进程 守护进程简介 进程运行有时候需要脱离当前运行环境,尤其是Linux和Unix环境中需要脱离Terminal运行,这个时候就要用到守护进程.守护进程可以脱离当前环境要素来执行,这 ...
- python开发进程:共享数据&进程池
一,共享数据 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合 通过消息队列交换数据.这样极大地减少了对使用锁定和其他同步手段的需求, 还可以扩展 ...
随机推荐
- hibernate工作流程、session
hibernate是对jdbc的封装,不建议直接使用jdbc的connection操作数据库,而是通过session操作数据库.session可以理解为操作数据库的对象. session与connec ...
- java_randomAccessFile类的使用
RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件.RandomAccessFile支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上 ...
- http://blog.csdn.net/pizi0475/article/details/48286579 -------------(Collada 快速入门)
http://blog.csdn.net/zhouhangjay/article/details/8469085 说明:Collada的文件格式,中文版的很少,在csdn上看到了一个Sleepy的,感 ...
- Django - 路由对应关系
1.对url路由关系命名,以后可以根据此名称,生成自己想要的url urls.py中: url('^fdsaafdf(\d+)/',views.index,name='indexx') url('^f ...
- java 交集 差集 并集
package com.wish.datastrustudy; import java.util.HashSet; import java.util.LinkedList; import java.u ...
- 本地文件与服务器文件同步shell脚本
为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上. 1.shell文件代码 #!/bin/sh read -t 30 -p ...
- 学习记录--如何将exec执行结果放入变量中?
declare @num int, ) set @sqls='select @a=count(*) from tb ' exec sp_executesql @sqls,N'@a int output ...
- ansible special topics
1.加速模式运行playbook accelerate 对于使用ansible 1.5 及之后版本的用户,加速模式只在以下情况下有用处: (A) 管理红帽企业版 Linux 6 或者更早的那些依然使用 ...
- ZOJ 3687 The Review Plan I
The Review Plan I Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on ZJU. Origi ...
- [Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]
经典二分图匹配,可以用匈牙利算法,也可以用最大流 代码如下(Dinic): #include <iostream> #include <cstdio> #include < ...