通常在java开发中采用单进程多线程的方式开发,因为JVM实在是太大了。但是在python中由于gil的原因,采用多线程方式无法很好的利用多核,那这样出了协程以外,就只能采用fork的方式了。python中fork的代价有多大?
2 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
我纯粹来作为字面党回答下楼主“Python中fork的代价有多大”:写一段C++的代码和Python的代码,都是做同样的事,fork10000次,每次创建子进程后立刻结束子进程。#!/usr/bin/envpython#coding:utf-8importtimeimportosstart=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的代价现在应该很明了。
添加回答
举报
0/150
提交
取消