python_多进程、多线程

本文探讨了Python中的多进程和多线程,包括创建进程、进程队列、效率对比、进程池、共享内存和进程锁。强调了多进程在数据规模大时的优势,以及多线程的并发执行特性。还介绍了线程的join功能、Queue的使用以及GIL和锁的作用,解释了如何在需要依赖执行顺序时使用锁。
摘要由CSDN通过智能技术生成

文章目录

1.创建进程

import multiprocessing as mp

def job(a):
    print('aaaa')

if __name__ == '__main__':
    p1 = mp.Process(target=job, args=(1,))
    p1.start()
    p1.join()

2.queue进程输出

import multiprocessing as mp

def job(q,a):
    res = 0
    for i in range(a):
        res += i
    q.put(res)
    
if __name__ == '__main__':
    q = mp.Queue()
    p1 = mp.Process(target=job, args=(q,3,))
    p2 = mp.Process(target=job, args=(q,2))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    res1 = q.get()
    res2 = q.get()
    p1.close()
    p2.close()
    print(res1 + res2)

3.效率对比(多线程与多进程)

import multiprocessing as mp
import threading as td
import time


def job(q):
    res = 0
    for i in range(1000000):
        res += i + i**2 + i**3
    q.put(res) # queue

def multicore():
    q = mp.Queue()
    p1 = mp.Process(target=job, args=(q,))
    p2 = mp.Process(target=job, args=(q,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    p1.close()
    p2.close()
    res1 = q.get()
    res2 = q.get()
    print('multicore:',res1 + res2)

def multithread():
    q = mp.Queue() # thread可放入process同样的queue中
    t1 = td.Thread(target=job, args=(q,))
    t2 = td.Thread(target=job, args=(q,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    res1 = q.get()
    res2 = q.get()
    print('multithread:', res1 + res2)

def normal():
    res = 0
    for _ in range(2):
        for i in range(1000000):
            res += i + 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值