python 进程复习
import os
import time
ret = os.fork() # 创建子线程 if ret ==0: # 子进程中返回值为0,父进程>0
while True:
print('......1......')
time.sleep(1) else:
while True:
print('......2......')
time.sleep(1)

多fork问题,以下代码会出现4个进程
import os
import time
ret = os.fork() if ret ==0:
print('......1......') else:
print('......2......') ret = os.fork() if ret ==0:
print('......11......') else:
print('......22.....')


import os
import time
ret = os.fork() if ret ==0:
print('......1......') else:
print('......2......') ret = os.fork() if ret ==0:
print('......11......') else:
print('......22.....')


进程间通信
进程之间默认无关联
普通进程间通信用 Queue队列
进程池中用Manager().Queue()
q.qsize()
q.full()
q.empty()
q.put()
q.get()
q.put_nowait()
q.get_nowait()
多进程文件拷贝案例
from multiprocessing import Pool,Manager
import os def copyFileName(name,oldFolderName,newFolderName,queue):
'完成copy一个文件的功能'
fr = open(oldFolderName + '/' + name)
fw = open(newFolderName + '/' + name,'w') content = fr.read()
fw.write(content) fr.close()
fw.close() queue.put(name) def main(): # 0,获取永远要copy的文件夹名字
oldFolderName = input('请输入文件夹的名字:') # 1.创建一个文件夹
newFolderName = oldFolderName + '-复件'
os.mkdir(newFolderName) # 2.获取old文件夹中所有文件的名字
fileNames = os.listdir(oldFolderName) # 3.使用多进程的方式copy原文件夹中所有文件到新的文件夹中
pool = Pool(5) #创建队列,计数
queue = Manager().Queue() for name in fileNames:
pool.apply_async(copyFileName,args=(name,oldFolderName,newFolderName,queue)) num = 0
allNum = len(fileNames)
while num<allNum:
queue.get()
num += 1
copyRate = num/allNum
print('\rcopy的进度是:%.2f%%'%(copyRate*100),end='') print('\n已完成拷贝。。。。。') if __name__ == '__main__':
main()
python 进程复习的更多相关文章
- Python并发复习1 - 多线程
一.基本概念 程序: 指令集,静态, 进程: 当程序运行时,会创建进程,是操作系统资源分配的基本单位 线程: 进程的基本执行单元,每个进程至少包含一个线程,是任务调度和执行的基本单位 > 进程和 ...
- Python并发复习2 - 多线程模块threading
一.多线程的调用 threading 模块建立在thread 模块之上.thread模块以低级.原始的方式来处理和控制线程,而threading 模块通过对thread进行二次封装, 提供了更方便的a ...
- python——进程基础
我们现在都知道python的多线程是个坑了,那么多进程在这个时候就变得很必要了.多进程实现了多CPU的利用,效率简直棒棒哒~~~ 拥有一个多进程程序: #!/usr/bin/env python #- ...
- 使用gdb调试Python进程
使用gdb调试Python进程 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到 ...
- python进程、线程、协程(转载)
python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- python进程池剖析(一)
python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...
- python——进程、线程、协程
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...
- python/进程线程的总结
python/进程线程的总结 一.进程和线程的描述: 进程:最小的资源管理单位 线程:最小的执行单位 执行一个进程时就默认执行一个线程(主线程) 进程和线程的工作方式: 串行: 假如共有A.B.C任务 ...
随机推荐
- sspanel 添加远程节点问题汇总
链接数据库错误: InternalError: (1130, u"Host '97.64.40.100' is not allowed to connect to this MySQL se ...
- 论文学习:Fully Convolutional Networks for Semantic Segmentation
发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...
- 小程序 for循环 报错 Cannot read property 'total' of undefined
for循环一直报错 Cannot read property 'total' of undefined,但total在起初是有定义的,后来找到了问题,是i<=的问题,改为<不报错了. i ...
- python条件控制
条件控制 现在我们写这样一个程序:在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了 my_age = 24 user_in ...
- 锐动视频SDK在金融业务加密双录管理系统通用解决方案
为了更好地保障消费者的合法权益,银监会和保监会提出了要求,在银行.保险从业人员销售理财产品或代理其他机构销售产品时,同期进行录音录像,确保销售人员按程序.按规定介绍产品,以便购买者更清楚地了解产品的性 ...
- ASP.NET Core 一步步搭建个人网站(7)_Linux系统移植
摘要 考虑我们为什么要选择.NET Core? 因为它面向的是高性能服务器开发,抛却了 AspNet 的臃肿组件,非常轻量,加上微软的跨平台战略,对 Docker 的亲和性,对于开发人员也非常友好,所 ...
- Mybatis动态SQL单一基础类型参数用if标签
Mybatis动态SQL单一基础类型参数用if标签时,test中应该用 _parameter,如: 1 2 3 4 5 6 <select id="selectByName" ...
- Problem : 1013 ( Digital Roots )
tips:分析不够仔细,白费了许多功夫.输入数据的范围,平时几乎很少考虑的,这个以后得注意.代码检查不够仔细啊,以后得注意了 #include<iostream> using namesp ...
- leaflet渲染mapbox gl的矢量数据
准备条件 1.mapbox-gl.js mapbox-gl.css 2.leaflet-mapbox-gl.js https://github.com/mapbox/mapbox-gl-leaflet ...
- 理解Spring中的IOC和AOP
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式 IOC就是典型的工厂模式,通过ses ...