栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python中的并行性无法正常工作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中的并行性无法正常工作

David
Beazley
在PyCon
2010上发表了关于此问题的演讲。正如其他人已经指出的那样,对于某些任务,尤其是对多核使用线程可能会导致性能比单线程执行的同一任务慢。Beazley发现,问题与多个内核发生了“
GIL之战”有关:

为避免GIL争用,让任务在单独的进程而不是单独的线程中运行可能会获得更好的结果。在多处理模块提供了一个方便的方式来做到这一点特别是因为多处理API是非常相似的线程API。

import multiprocessing as mpimport datetime as dtdef work():    t = dt.datetime.now()    print mp.current_process().name, t    i = 0    while i < 100000000:        i+=1    t2 = dt.datetime.now()    print mp.current_process().name, t2, t2-tif __name__ == '__main__':     print "single process:"    t1 = mp.Process(target=work)    t1.start()    t1.join()    print "multi process:"    t1 = mp.Process(target=work)    t1.start()    t2 = mp.Process(target=work)    t2.start()    t1.join()    t2.join()

产量

single process:Process-1 2011-12-06 12:34:20.611526Process-1 2011-12-06 12:34:28.494831 0:00:07.883305multi process:Process-3 2011-12-06 12:34:28.497895Process-2 2011-12-06 12:34:28.503433Process-2 2011-12-06 12:34:36.458354 0:00:07.954921Process-3 2011-12-06 12:34:36.546656 0:00:08.048761

PS。正如zeekay在评论中指出的那样,GIL之战仅对CPU密集型任务而言是严峻的。对于IO绑定的任务来说应该不是问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626111.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号