为了账号安全,请及时绑定邮箱和手机立即绑定

python中fork的代价

python中fork的代价

慕容3067478 2019-04-13 08:46:29
通常在java开发中采用单进程多线程的方式开发,因为JVM实在是太大了。但是在python中由于gil的原因,采用多线程方式无法很好的利用多核,那这样出了协程以外,就只能采用fork的方式了。python中fork的代价有多大?
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

我纯粹来作为字面党回答下楼主“Python中fork的代价有多大”:
写一段C++的代码和Python的代码,都是做同样的事,fork10000次,每次创建子进程后立刻结束子进程。
#!/usr/bin/envpython
#coding:utf-8
importtime
importos
start=time.time()
foriinrange(10000):
pid=os.fork()
ifpid==0:
os._exit(0)
printtime.time()-start#单位为秒
#include
#include
#include
intmain()
{
intpid;
std::clock_tc_start=std::clock();
for(inti=0;i<10000;++i){
if((pid=fork())==0){
_exit(0);
}
}
std::cout<<(std::clock()-c_start)/1000<<"ms\n";
return0;
}
结果:python版本用时3秒左右,C++版本用时700多毫秒。python:c++为4倍左右。
考虑到一般情况下python跟c++在运行效率上的差异,这个差距算是很好了。
c++是直接使用系统调用fork函数,所以python中fork的代价现在应该很明了。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 485 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信