PYTHON多进程样码
敲了一晚上,留个念想。
发现它和LINUX的C编程差不多,就是作了PYTHON化的语法封装。
以后希望有机会能用上。。
A,多进程函数化实现
import multiprocessing import time def worker_1(interval): n = 5 while n > 0: # print('The time is {0}'.format(time.ctime())) print 'start worker_1' time.sleep(interval) n -= 1 print 'end worker_1' def worker_2(interval): n = 5 while n > 0: # print('The time is {0}'.format(time.ctime())) print 'start worker_2' time.sleep(interval) n -= 1 print 'end worker_2' def worker_3(interval): n = 5 while n > 0: # print('The time is {0}'.format(time.ctime())) print 'start worker_3' time.sleep(interval) n -= 1 print 'end worker_3' if __name__ == '__main__': p1 = multiprocessing.Process(target=worker_1, args=(1,)) p2 = multiprocessing.Process(target=worker_2, args=(2,)) p3 = multiprocessing.Process(target=worker_3, args=(3,)) p1.start() p2.start() p3.start() print 'The number of CPU is:' + str(multiprocessing.cpu_count()) for p in multiprocessing.active_children(): print 'child p.name:' + p.name + '\tp.id' + str(p.pid) print 'END!!!!!!!!!!!'
B,多进程类实现
import multiprocessing import time class ClockProcess(multiprocessing.Process): def __init__(self, interval): multiprocessing.Process.__init__(self) self.interval = interval def run(self): n = 5 while n >0: print 'The time is {0}'.format(time.ctime()) time.sleep(self.interval) n -= 1 if __name__ == '__main__': p = ClockProcess(3) p.start()
C,多进程DAEMON
import multiprocessing import time def worker(interval): print 'worker start:{0}'.format(time.ctime()) time.sleep(interval) print 'worker end:{0}'.format(time.ctime()) if __name__ == '__main__': p = multiprocessing.Process(target=worker, args=(3,)) p.daemon = True p.start() p.join() print 'end'
D,LOCK
import multiprocessing import sys def worker_with(lock, f): with lock: fs = open(f, 'a+') n = 10 while n > 1: fs.write('Lock acquired via with\n') n -= 1 fs.close def worker_no_with(lock, f): lock.acquire() try: fs = open(f, 'a+') n = 10 while n > 1: fs.write('Lock acquired directly\n') n -= 1 fs.close() finally: lock.release() if __name__ == '__main__': lock = multiprocessing.Lock() f = 'file.txt' w = multiprocessing.Process(target=worker_with, args=(lock, f)) nw = multiprocessing.Process(target=worker_no_with, args=(lock, f)) w.start() nw.start() print 'end'
E。SEMAPHORE
import multiprocessing import time def worker(s, i): s.acquire() print(multiprocessing.current_process().name +'acquire') time.sleep(i) print(multiprocessing.current_process().name + 'release') s.release() if __name__ == '__main__': s = multiprocessing.Semaphore(2) for i in range(5): print i p = multiprocessing.Process(target=worker, args=(s, i)) p.start()
F,EVENT
import multiprocessing import time def wait_for_event(e): print 'wait_for_event: starting' e.wait() print 'wait_for_event: e.is_set()->' + str(e.is_set()) def wait_for_event_timeout(e, t): print 'wait_for_event_timeout: starting' e.wait(t) print 'wait_for_event_timeout: e.is_set()->' + str(e.is_set()) if __name__ == '__main__': e = multiprocessing.Event() w1 = multiprocessing.Process(name='block', target=wait_for_event, args=(e,)) w2 = multiprocessing.Process(name='non-block', target=wait_for_event_timeout, args=(e,2)) w1.start() w2.start() time.sleep(3) e.set() print 'main: event is set'
G,PIPE
import multiprocessing import time def proc1(pipe): while True: for i in xrange(10): print 'proc1 send: %s' % (i) pipe.send(i) time.sleep(1) def proc2(pipe): while True: print 'proc2 rev:', pipe.recv() time.sleep(1) if __name__ == '__main__': pipe = multiprocessing.Pipe() p1 = multiprocessing.Process(target=proc1, args=(pipe[0],)) p2 = multiprocessing.Process(target=proc2, args=(pipe[1],)) p1.start() p2.start() p1.join() p2.join()
H。Queue
import multiprocessing def writer_proc(q): try: q.put(1, block=False) q.put(2, block=False) q.put(3, block=False) except: pass def reader_proc(q): try: print q.get(block=False) print q.get(block=False) print q.get(block=False) except: pass if __name__ == '__main__': q = multiprocessing.Queue() writer = multiprocessing.Process(target=writer_proc, args=(q,)) writer.start() reader = multiprocessing.Process(target=reader_proc, args=(q,)) reader.start() reader.join() writer.join()
照搬:
http://www.cnblogs.com/kaituorensheng/p/4445418.html
还有一个POOL,明天补上。
PYTHON多进程样码的更多相关文章
- Python多进程(1)——subprocess与Popen()
Python多进程方面涉及的模块主要包括: subprocess:可以在当前程序中执行其他程序或命令: mmap:提供一种基于内存的进程间通信机制: multiprocessing:提供支持多处理器技 ...
- python 多进程开发与多线程开发
转自: http://tchuairen.blog.51cto.com/3848118/1720965 博文作者参考的博文: 博文1 博文2 我们先来了解什么是进程? 程序并不能单独运行,只有将程 ...
- 【转】【Python】Python多进程与多线程
1.1 multiprocessing multiprocessing是多进程模块,多进程提供了任务并发性,能充分利用多核处理器.避免了GIL(全局解释锁)对资源的影响. 有以下常用类: 类 描述 P ...
- Python代码样例列表
扫描左上角二维码,关注公众账号 数字货币量化投资,回复“1279”,获取以下600个Python经典例子源码 ├─algorithm│ Python用户推荐系统曼哈顿算法实现.py│ ...
- python多进程-----multiprocessing包
multiprocessing并非是python的一个模块,而是python中多进程管理的一个包,在学习的时候可以与threading这个模块作类比,正如我们在上一篇转载的文章中所提,python的多 ...
- python多进程multiprocessing Pool相关问题
python多进程想必大部分人都用到过,可以充分利用多核CPU让代码效率更高效. 我们看看multiprocessing.pool.Pool.map的官方用法 map(func, iterable[, ...
- Python多进程和多线程是鸡肋嘛?【转】
GIL是什么 Python的代码执行由 Python虚拟机(也叫解释器主循环,CPython版本)来控制,Python在设计之初就考虑到在解释器的主循环中,同时只有一个线程在运行.即每个CPU在任意时 ...
- 如何通过Elasticsearch Scroll快速取出数据,构造pandas dataframe — Python多进程实现
首先,python 多线程不能充分利用多核CPU的计算资源(只能共用一个CPU),所以得用多进程.笔者从3.7亿数据的索引,取200多万的数据,从取数据到构造pandas dataframe总共大概用 ...
- 【Python从入门到精通】(二十五)Python多进程的使用
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本篇重点介绍Python多进程的使用,读者朋友们可以将多进程和多线程两者做一个对比学习. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题 ...
随机推荐
- CSS3 过渡transition 认识
其实,我一直觉得自己对新知识是以一种抵触的情绪在学习的.因为我总是习惯于将事情想得很复杂,所以也错过了很多美好的东西. 以前觉得CSS3的知识应该是很难的,很难理解的.但是我发现我觉得知识点很难,是因 ...
- ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)
MD5加密,Parameters防止SQL注入: protected void btnLog_Click(object sender, EventArgs e) { //获取验 ...
- arguments 函数内部属性
1.arguments 是在function方法里面的,是实参数组,用法是挺多的,下面来记录一下 2.利用arguments实现方法的重载 //01.使用argument模拟方法重载 function ...
- iOS开发——企业证书(免审核 299$)
(最近准备考试……空闲截图整理成博客)
- sql server 2008如何保存Emoji表情
1.将就的方法已找到,在保存前,Emoji表情字符串进行utf-8编码,然后写入数据表的nvarchar(max)字段,取出时再进行解码即可. c#的写法如下: 写入数据表前编码: string sH ...
- 选择结构if语句和switch语句的区别
------- android培训.java培训.期待与您交流! ---------- 1.选择结构if语句格式及其使用 A:if语句的格式: if(比较表达式1) { 语句体1; }else if( ...
- ZOJ 3211 Dream City(DP)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3374 题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上 ...
- java感触一则
看到开源中国上边有那么多关于java的开源项目,从数据库到3D游戏再到IDE工具,甚至有iQQ,形形种种都是一些比较成熟的,工程很大的项目.才意识到Java是如此的强大和流行. 这么多开源的代码我不可 ...
- 微信企业号 jsSDK wx.config报invalid signature错误,导致api接口无法使用
最近在做公司定制化的时候发现一个问题,使用微信的语音API的时候微信报错,错误信息为:the permission value is offline verifying 但是诡异的是:同样的代码在我们 ...
- 51nod1240莫比乌斯函数
莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数). ...