测试Python中的因为GIL导致多线程性能测试,pythongil,本程序通过4个例子分析因
测试Python中的因为GIL导致多线程性能测试,pythongil,本程序通过4个例子分析因
本程序通过4个例子分析因为GIL导致了计算密集型和IO密集型的任务的单线程和多线程性能的差异.
#coding:cp936import timeimport getpassimport threadingimport osdef EntryFunction(f): def _(*args,**tw): result = f(*args,**tw) print("=== Process End ===") getpass.getpass("") return result return _()def Stopwatch(f): def _(*args,**tw): t1 = time.time() f(*args,**tw) t2 = time.time() return t2-t1 return _class Handler(threading.Thread): def __init__(self,father): super(Handler,self).__init__() self.father = father def run(self): return self.father.run()class Compute_ST(object): """计算密集型单线程""" def __init__(self,run_time): self.run_time = run_time def run(self): s = 0 for i in range(10000): s += i return s @Stopwatch def start(self): for i in range(self.run_time): self.run()class Compute_MT(object): """计算密集型多线程""" def __init__(self,run_time): self.threads = [Handler(self) for i in range(0,run_time)] self.runing_thread = 0 def run(self): self.runing_thread += 1 s = 0 for i in range(10000): s += i self.runing_thread -= 1 return s @Stopwatch def start(self): for t in self.threads: t.start() while self.runing_thread > 0: passclass IO_ST(Compute_ST): """IO密集型单线程""" def run(self): r = os.popen("ping 127.0.0.1") return r.read()class IO_MT(Compute_MT): """IO密集型多线程""" def run(self): self.runing_thread += 1 r = os.popen("ping 127.0.0.1") t = r.read() self.runing_thread -= 1 return t@EntryFunctiondef main(): n = 100 test = Compute_ST(n) print(test.__doc__) t = test.start() print(t) test = Compute_MT(n) print(test.__doc__) t = test.start() print(t) n = 10 test = IO_ST(n) print(test.__doc__) t = test.start() print(t) test = IO_MT(n) print(test.__doc__) t = test.start() print(t)#该片段来自于http://byrx.net
相关内容
- python 中文分词——FMM算法,python分词fmm算法,FMM算法的
- python定义的一个简单的shell函数,pythonshell函数,def she
- 模拟登陆阿里妈妈生成商品推广链接,阿里商品,淘宝官
- 通过HTTP方式远程监控windows主机网络情况(ipconfig、pi
- python dns查询,pythondns,根据主机名来查询IP地址
- 抓取点东西,抓取点,#encoding=ut
- 简单封装python httplib urllib2,httpliburllib2,在做网络爬虫时
- Python 判断一个进程是否存在,python进程,#-*- coding:
- 聊天服务器,,实时聊天;得到用户列表;
- 随机数应用,,from random
评论关闭