多线程性能开销

发布于 2021-01-29 14:09:56

所以基本上我创建了这个程序,为redis添加了值。到目前为止,我得到了这个时机:

real 0m27.759s
user 0m18.129s
sys  0m5.580s

但是,当我尝试运行多个线程时:

if __name__ == '__main__':
    try:
        for x in range(0, NUM_THREADS):
            Thread(None, startProgram, None,
                   (NUM_HOSTS/NUM_THREADS*x+1,
                    NUM_HOSTS/NUM_THREADS*(x+1))).start()
    except Exception as errtxt:
        print errtxt

我用NUM_THREADSset ot得到这个10

real 0m32.642s
user 0m22.953s
sys  0m11.473s

为什么我的程序在有 更多 线程的情况下运行 速度较慢 ? __

我正在运行Linux Ubuntu 11.04和Python 2.7.1。

关注者
0
被浏览
195
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    结果取决于Python的实现,cpython的GIL阻止了并行计算比顺序计算更快。

    考虑使用该multiprocessing模块,该模块在其自己的Python进程中执行每个线程,或者使用其他非GIL的Python实现,例如IronPythonJython



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看