pyrhon多进程操作初探
linux系统中提供了fork函数进行进程的创建,这个接口在函数返回上比较特殊,有两个返回值,一个是子进程返回值为0,一个是父进程返回值,值大于0,表是子进程的ID.如果小于0.则表示接口出错.
#!/usr/bin/python
#coding:utf-8
import os print "proess id is %d" % os.getpid() p = os.fork()
if(p==0):
print "this is a child process"
elif p>0:
print "this is a pp proccess %d" % p
运行结果:
proess id is 27048
this is a pp proccess 27053
this is a child process
二、使用process
#!/usr/bin/python
#coding:utf-8
import os
from multiprocessing import Process def domyprocess(msg):
print 'process id is %d ' % os.getpid()
return if __name__ == '__main__':
print 'paraent proccess id %s' % os.getpid()
t1 = Process(target=domyprocess,args=('hello',))
t1.start()
t1.join()
t2 = Process(target=domyprocess,args=('world',))
t2.start()
t2.join()
运行结果:
paraent proccess id 27616
process id is 27621
process id is 27622
三、进程池pool
#!/usr/bin/python
#coding:utf-8
import os, time, random
from multiprocessing import Pool def domyprocess(msg):
print '%s process id is %d ' % (msg,os.getpid())
begin = time.time()
time.sleep(random.random()*3)
end = time.time()
print '%d run %d seconds' % (os.getpid(),end-begin)
return if __name__ == '__main__':
print 'paraent proccess id %s' % os.getpid()
p=Pool();
for i in range(5):
p.apply_async(domyprocess,args=(1,))
print 'wait process to do....'
p.close()
p.join()
print 'process are run end....'
运行结果:
paraent proccess id 28191
wait process to do....
1 process id is 28197
1 process id is 28199
1 process id is 28198
1 process id is 28200
28197 run 0 seconds
1 process id is 28197
28200 run 1 seconds
28198 run 2 seconds
28199 run 2 seconds
28197 run 1 seconds
process are run end....
学习永无止境,我将继续前行
pyrhon多进程操作初探的更多相关文章
- Python多进程操作同一个文件,文件锁问题
最近工作当中做了一个项目,这个项目主要是操作文件的. 在操作耗时操作的时候,我们一般采用多线程或者多进程.在开发中,如果多个线程需要对文件进行读写操作,就需要用到线程锁或者是文件锁. 使用fcntl ...
- 多进程操作-进程锁multiprocess.Lock的使用
多进程操作-进程锁multiprocess.Lock的使用 通过之前的Process模块的学习,我们实现了并发编程,虽然更加充分地利用了IO资源,但是也有缺陷:当多个进程共用一份数据资源的时候,就 ...
- swoole多进程操作
多个任务同时执行 将顺序执行的任务,转化为并行执行(任务在逻辑上可以并行执行) 比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送. 不使用多进程时,我们首先判断是否发送 ...
- C#对图片文件的压缩、裁剪操作初探
在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强 ...
- python 多进程操作
由于python 多线程是无法在多核上发挥优势的,所以才用多进程的方式来折中将这个问题解决. from multiprocessing import Pool import os def f(x): ...
- ADF中VO的删除操作初探
在ADF的VO中,真实提交更改是在commit 方法执行之后,如以下增加操作 EntityDefImpl departmentEODef = DepartmentEOImpl. getDefiniti ...
- Java中的多线程操作初探
问题引出: 说是java,其实还是在做android的时候遇到的问题,在android 4.0以后,访问网络必须在新线程中实现,所以才会遇到这个问题.只是为了方面说明问题,才新建一个java项目.在m ...
- 多进程操作-进程队列multiprocess.Queue的使用
一.ipc机制 进程通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁 queue 下面拿代码来实现Queue如何使用: 案例一: from multiprocessing import Q ...
- android:process为耗资源操作指定一个新进程
当有一些耗费内存比较多的操作时,可以通过android:process指定一个新的进程.保证程序运行. 例如: 一个后台长期运行的service: <service android:name=& ...
随机推荐
- configure: error: xml2-config not found. Please check your libxml2 installation
安装php时的报错 checking libxml2 install dir... nochecking for xml2-config path... configure: error: xml2- ...
- Srtuts2实现登录界面(不连接数据库)报错(二)
二月 28, 2014 11:37:29 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...
- Asp.net的sessionState四种模式配置方案
sessionState节点的配置 web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer ...
- Django学习-10-命名空间
不使用命名空间,且两个APP某条url使用相同的name属性 app01_urls.py urlpatterns = [ url(r'aaa/$', views.app01_aaa, name=& ...
- JavaScript设计模式(8)-装饰者模式
装饰者模式 1. 作用: 可用来透明地把对象包装在具有同样接口的另一对象之中,这样可以给一个方法添加一些行为,然后将方法调用传递给原始对象. 可用于为对象增加功能,用来代替大量子类. 装饰者对其组件进 ...
- 慢慢人生路,学点Jakarta基础-JavaDoc标记
本文对使用Maven工程构建Jenkinsjob时遇到的问题进行一下分析汇总. JavaDoc标记使用问题 一般Maven项目都有配置产生Java DOC,但是在Jenkins里面产生DOC会有一些严 ...
- 爬虫工具fiddle在firefox浏览器中的使用
1.fiddle工作原理 浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,默认通过自己发送HTTP(或HTTPS)请求到服务器. 使用Fiddler之后,浏览器像目标服务器发送的请求都会经 ...
- NOIWC2018游记
NOIWC2018游记 接着PKUWC就是NOIWC了.感觉时间很紧呀,但越是紧张呢,就越让人心里觉得充实. 能够去NOIWC,应该是一次非常充实的体验吧. 这一篇游记是接着上一篇写的,时间点上完全都 ...
- [SDOI2015]约数个数和
Sol 首先有个结论 \(\sum_{i=1}^{m}\sum_{j=1}^{n}d(i*j)=\sum_{i=1}^{m}\sum_{j=1}^{n}\sum_{x|i}\sum_{y|i}[gcd ...
- css块级元素和内联元素
左边的是块级元素block,右边内联inline. 修改方法 display: inline;