前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python Multiprocessing使用Queue的例子

Python Multiprocessing使用Queue的例子

作者头像
王云峰
发布2023-10-23 10:24:15
1260
发布2023-10-23 10:24:15
举报

对于一些计算密集性的任务,使用Python的多进程能显著缩短运行的时间。例如对10个元素进行相同的操作,通过Python的multiprocessing 包可以进行并行化,实测能有数倍的速度提升。这里写一个简单的例子,将所有的结果写入队列,等队列拿到10个结果后,将结果写入文件。

代码语言:javascript
复制
from multiprocessing import Queue, Process, Pool
import os
import time

import numpy as np


def write_queue(q, i):
    print(f'Begin process ({os.getpid()})')
    cur_value = i * i

    q.put(cur_value)


def read_queue(q, num_sample):
    val_list = []
    while True:
        v = q.get(True)
        val_list.append(v)

        if len(val_list) >= num_sample:
            np.save('data.npy', np.array(val_list))
            return


def main():
    NUM_PROCESS = 10
    q = Queue(NUM_PROCESS)
    pws = []
    for i in range(NUM_PROCESS):
        pw = Process(target=write_queue, args=(q, i))
        pws.append(pw)

    pr = Process(target=read_queue, args=(q, NUM_PROCESS))

    for pw in pws:
        pw.start()

    pr.start()
    for pw in pws:
        pw.join()

    pr.terminate()

    data = np.load('data.npy')
    print(data)


if __name__ == '__main__':
    main()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档