python学习笔记(1)----并发与IO
来源:互联网 发布:飞鱼网络电视1.3.9 编辑:程序博客网 时间:2024/06/03 13:14
今天本来是想写个爬虫,结果发现对python非常生疏,于是自学了点东西,解决了点小麻烦,在此总结下:
1. if __name== '__main__': main() 的含义:
比如写了一个PY文件,但是在其他文件中也想引用,这时就可以在文件中设置这一行,代表如果执行这个文件则运行main(),如果在其他文件中引用这个文件则不执行
2.下面是一些多线程,多进程并发的总结。虽然这是第一次用python写并行,但是之前学过操作系统和linux下C语言的并发编程,所以对它还是有一些了解的,鉴于LZ使用的是MAC OS X,所以程序在WINDOWS下不知道能不能运行。
需要引入的有:
import osimport time,threadingfrom multiprocessing import Pool,Process
A: fork()创建多进程:
import os
pid = os.fork()if pid==0: print 'child'else: print 'parent'子进程中fork()返回的pid的值为0,如果想获取自己的pid,使用os.getpid(), 如果想获取父进程的pid,使用os.getppid(),父进程中返回的pid为子进程的PID而非自己的。
B:multiprocessing模块:
def test(a): global mm print 'qqq%s'%a time.sleep(10) mm = mm+1 print mm print 'ok%s'%amm = 0 p = [0,1,2,3,4,5,6,7,8,9]for i in range(10): time.sleep(1) p[i] = Process(target=test,args=(i,)) p[i].start()print 'get'for j in range(10): p[j].join() pass#p[0].join()print os.getpid()
使用Process创建进程后自动执行target的函数,p.join()表示父进程只有在p这个进程执行完后才继续,如果要等所有进程执行完,则要对所有子进程使用join()
C:进程池:
def test(a): print ap = Pool()for i in range(2): p.apply_async(test,(i,))p.close()print 'xxx'p.join()
使用Pool()创建进程池,apply创建子进程。close表示当子进程全部运行完成后关闭进程池,join表示进程池关闭后下面的代码才会执行。
注意:close之后的print代码不会等到关闭后才执行,只有执行到join时主进程才阻滞。
D:多线程:多线程和多进程B方法相似只是把Process改成threading.Thread即可
3. 文件IO
A:读文件read(),readline(),readlines()
使用with open('a.txt', 'r') as f : 打开文件且能自动关闭,使用f.read(size)读取全部或固定大小的文件,使用readlines()读取全部行并且按行存入list中,对于大文件使用
with open('a.txt', 'r') as f : #print f.readlines() print '\n' ''' for line in f.readlines(): print line.strip() ''' line = f.readline() while line: print line.strip() line = f.readline()
0 0
- python学习笔记(1)----并发与IO
- Python之学习笔记(IO操作)
- python学习笔记(2)-IO编程
- Python学习笔记(七)IO编程
- 【Python学习笔记】IO编程
- python学习笔记 IO编程
- python学习笔记6IO
- Java并发学习笔记(1) 线程与进程
- Java并发学习笔记(1) 线程与进程
- python第二天学习笔记(输入输出IO)
- Python学习笔记(二)——IO输入输出
- python基础-yield与装饰器、yield并发切换(非io)、greenlet实现切换(非io)
- python学习笔记(九) - IO编程
- [2015.2.11] python学习笔记 IO编程
- Python –同步IO学习笔记
- Python IO编程——学习笔记
- Python Tutorial 学习笔记5 --IO
- 【Python学习笔记】IO编程:文件读写
- java.lang.ClassNotFoundException: ch.qos.logback.ext.spring.web.LogbackConfigListener
- [编程之美] 2.14 求数组的子数组之和的最大值
- win7下怎么安装IIS
- 利用C++对象确定性析构的原则来解析单例模式
- 经济学12级3、4、5、6班网络技术最后一课
- python学习笔记(1)----并发与IO
- MySQL安装图解
- 基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结【依赖库源码包】
- JDBC 数据源及JNDI(转载)
- Cocos2d-x 3.0final 终结者系列教程11-触摸机制
- 分布式缓存
- unable to load dynamic library php_pdo_pgsql.dll
- Android 打造自己的个性化应用(一):应用程序换肤主流方式的分析与概述
- ASPxSpinEdit控件在asp.net中的使用