python-多处理与单处理的性能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-多处理与单处理的性能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1629字,纯文字阅读大概需要3分钟。
内容图文
![python-多处理与单处理的性能](/upload/InfoBanner/zyjiaocheng/659/dfc73f12ed964495a491dcd8fe3644f6.jpg)
我对python相当陌生,目前正在研究多处理.我创建了一个简单的示例,我认为使用多处理比单处理要快得多,但是事实证明它实际上要慢一些!该脚本创建并运行一个具有0到999之间的整数的列表,将其拆分为较短的列表,供工作进程处理,然后运行并打印“我是工作程序[整数]”.典型的运行时间为大约. 26秒,而单个进程脚本则快了0.5-1秒.有什么特殊原因导致我的多处理脚本变慢?还是为什么使用多处理是一个不好的例子?以下是这两个脚本的代码供参考
多处理代码:
import multiprocessing
from datetime import datetime
def f(x):
listagain=[]
for i in x:
listagain.append("I am worker " + str(i))
return listagain
def chunks(l, n):
""" Yield successive n-sized chunks from l.
"""
lister=[]
for i in xrange(0, len(l), n):
lister.append(l[i:i+n])
return lister
if __name__ == '__main__':
startTime=datetime.now()
Pool=multiprocessing.Pool
mylist=list(xrange(10000))
size=10
listlist=[]
listlist=chunks(mylist,size)
workers=4
pool=Pool(processes=workers)
result=pool.map(f,listlist)
pool.close()
pool.join()
print result
print (datetime.now()-startTime)
单一处理代码:
from datetime import datetime
def f(x):
listagain=[]
for i in x:
for j in xrange(0,len(i)):
listagain.append("I am worker " + str(i[j]))
return listagain
def chunks(l, n):
""" Yield successive n-sized chunks from l.
"""
lister=[]
for i in xrange(0, len(l), n):
lister.append(l[i:i+n])
return lister
if __name__ == '__main__':
startTime=datetime.now()
mylist=list(xrange(10000))
size=10
listlist=[]
listlist=chunks(mylist,size)
result=f(listlist)
print result
print (datetime.now()-startTime)
解决方法:
与多处理相关的开销可能比您的问题中单个任务所花费的时间要高,但是,如果您有更大的任务,则这种开销(通常与腌制Python对象相关)将成比例地变小,并且使用多处理将是有利的.
内容总结
以上是互联网集市为您收集整理的python-多处理与单处理的性能全部内容,希望文章能够帮你解决python-多处理与单处理的性能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。