Python 多线程与多进程的性能分析

摘要:
1.多进程和多进程:优点:可以利用多核优势,缺点:成本高2。多线程:优点:成本低缺点:无法利用多核优势3。结论:计算密集型可以选择多进程,IO密集型可以从线程中选择多线程importThreadfromProcessimportProcessimportTime#计算密集型defwork():res=1forinrange(100000000):res+=iif__

1、多进程多进程:

优点:可以利用多核优势

缺点:开销大

2 、多线程:

优点:开销小

缺点:不能利用多核优势

3、结论:计算密集型可以选择多进程,IO密集型可以选择多线程

from threading import Thread
from multiprocessing import Process
import time
#计算密集型
def work():
    res=1
    for i in range(100000000):
        res+=i

if __name__ == '__main__':
    p_l=[]
    start=time.time()
    for i in range(4):
        # p=Process(target=work) #6.7473859786987305
        p=Thread(target=work) #24.466399431228638
        p_l.append(p)
        p.start()
    for p in p_l:
        p.join()

    print(time.time()-start)
from threading import Thread
from multiprocessing import Process
import time
#IO密集型
def work():
    time.sleep(2)

if __name__ == '__main__':
    p_l=[]
    start=time.time()
    for i in range(400):
        # p=Process(target=work) #12.104692220687866
        p=Thread(target=work) #2.038116455078125
        p_l.append(p)
        p.start()
    for p in p_l:
        p.join()

免责声明:文章转载自《Python 多线程与多进程的性能分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Qt中各个widget前后位置的设定(转)FormData下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python环境的安装

参考官方文档 http://www.runoob.com/python/python-install.html Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。 您需要下载适用于您使用平台的二进制代码,然后安装Python。 如果您平台的二进制代码是不可用的,你需要使用C编译器手动编译源代码。 编译的源代码,功能上有更多的选择性,...

当用python读取几十万行文本时,会出现什么状况?

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者:accumulate_zhang 我在使用python读取几十万行的文件中的数据,并构造字典,列表等数据结构时,再访问字典,列表时,一般都会出现内存不够的问题,然后只能循环读取几百行或者一定数量的行数来循环操作。 keywo...

docker安装Jenkins和构建python容器

准备工作:## 1.编写Dockerfile 定制版的镜像,以下注释需去掉尽量选择国内源,并更新下pip工具 RUN pip3 install --upgrade pipRUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-ho...

python下编译py成pyc和pyo

其实很简单,用python -m py_compile file.py python -m py_compile /root/src/{file1,file2}.py编译成pyc文件。也可以写份脚本来做这事:Code: import py_compile py_compile.compile('path') //path是包括.py文件名的路径 用py...

Python之telnetlib模块

telnetlib是python标准库中的一员,我们可以使用该模块以telnet的方式与服务器交互。请观察下面示例了解它的用法: import telnetlib def run_telnet(host, username, password, commands): """ 连接并登录服务器后,执行命令串 """ # 连...

Java多线程:向线程传递参数的三种方法

在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法...