python多进程与多线程的区别

多进程与多线程的比较:

python多线程只能运行在一个cpu内核,
对于耗费cpu的操作多进程优于多线程,
对于io操作多线程优于多进程。


分别用多进程和多线程实现一个耗费cpu的计算操作:

运行代码看到

多线程计算耗时39.59178113937378s
多进程计算耗时17.96556830406189s


from concurrent.futures import ThreadPoolExecutor,as_completed
from concurrent.futures import ProcessPoolExecutor
import time
def fib(n):
    if n <2:
        return 1
    return fib(n-1)+fib(n-2)
if __name__ == '__main__':
    with ThreadPoolExecutor(5) as executor:
        all_task = [executor.submit(fib, (num)) for num in range(25,40)]
        start_time = time.time()
        for future in as_completed(all_task):
            result = future.result()
            print("exec result is  {} ".format(result))

        print('thread time is ====> ',time.time() - start_time)
分别用多进程和多线程实现一个类似io的操作:

多进程计算耗时12.173911333084106
多线程计算耗时12.062113761901855

操作数据较大时,区别会更明显

from concurrent.futures import ProcessPoolExecutor
from concurrent.futures import ThreadPoolExecutor
import time
def random_sleep(n):
    time.sleep(n)
    return n
if __name__ == '__main__':
    with ThreadPoolExecutor(5) as executor:
        all_task = [executor.submit(random_sleep, (n)) for n in [2]*30]
        start_time = time.time()
        for future in as_completed(all_task):
            result = future.result()
            print("process exec result is  {} ".format(result))

        print('process time is ====>',time.time() - start_time)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值