美文网首页
python多进程

python多进程

作者: 软件开发技术修炼 | 来源:发表于2025-03-14 16:32 被阅读0次
进程的五态模型
1、 queue的作用,工作函数中,无法通过return返回进程函数中的结果,使用queue进行存储结果,要用时再进行取出

import time
import multiprocessing as mp

def job1(q):
    res = 0
    for i in range(100):
        res += i + i**5 + i**8
        time.sleep(0.1)
    q.put(res)

def job2(q):
    res = 0
    for i in range(100):
        res += i + i**5 + i**8
        time.sleep(0.1)
    q.put(res)


if __name__ == '__main__':
    start_time = time.time()
    #创建队列
    q = mp.Queue()
    #创建进程
    new_process1 = mp.Process(target=job1, args=(q,))
    # 创建进程2
    new_process2 = mp.Process(target=job2, args=(q,))
    new_process1.start()
    new_process2.start()
    #通过队列获取值
    res1 = q.get()
    res2 = q.get()
    print("res1 为 %d,res2 为 %d"%(res1,res2))
    end_time = time.time()
    print(" 整个过程所用时间 %s"%(end_time - start_time))

2、多进程、多线程、以及什么都不用的普通方法进行处理,看看他们三种方法的效率

import time
import multiprocessing as mp
import threading as th

def mp_job1(res):
    for i in range(10000000):
        res += i + i**5 + i**8
    print(res)

def mt_job2(res):
    for i in range(10000000):
        res += i + i**5 + i**8
    print(res)

def normal_job(res):
    for i in range(10000000):
        res += i + i**5 + i**8
    print(res)


if __name__ == '__main__':
    start_time = time.time()
    mp_sum = 0
    #创建进程
    new_process1 = mp.Process(target=mp_job1, args=(mp_sum,))
    # 创建进程2
    new_process2 = mp.Process(target=mp_job1, args=(mp_sum,))
    new_process1.start()
    new_process2.start()
    new_process1.join()
    new_process2.join()
    end_time = time.time()
    print(" 整个过程所用时间 %s"%(end_time - start_time))
    start_time1 = time.time()
    mt_sum = 0
    # 创建进程
    new_t1 = th.Thread(target=mt_job2, args=(mt_sum,))
    # 创建进程2
    new_t2 = th.Thread(target=mt_job2, args=(mt_sum,))
    new_t1.start()
    new_t2.start()
    new_t1.join()
    new_t2.join()
    end_time1 = time.time()
    print(" 整个过程所用时间 %s" % (end_time1 - start_time1))
    start_time3 = time.time()
    n_sum = 0
    normal_job(n_sum)
    normal_job(n_sum)
    end_time3 = time.time()
    print(" 整个过程所用时间 %s" % (end_time3 - start_time3))
运行结果 进程状态转换

相关文章

网友评论

      本文标题:python多进程

      本文链接:https://www.haomeiwen.com/subject/jdqrfdtx.html