在Python中并行化程序

时间:2016-05-29 13:58:12

标签: python multithreading

我正在使用Python中的文本进行大量工作,但我对该语言不熟悉,并且还不知道如何在Py中使用多线程。

我的用例如下:

  1. 生成文本T_s。
  2. 的单一生产者P(数据库/ XML)
  3. T_s中的每个文本都可以独立处理。处理过的文本组成了T_p set。
  4. 结果集由单个线程S写入文本文件/ XML /数据库。
  5. 数据量巨大,除了内存中的当前数据外,所有处理都无法保留任何内容。

    我会按以下方式组织这个过程:

    1. 制作人将文本放入Q_s队列。
    2. 有一组工人和一名经理从队列中获取文本并在工人之间分配。
    3. 每个工作人员将处理过的文本放入Q_p。
    4. 接收过程从Q_p读取已处理的文本并保留它们。
    5. Beyound所有 Producer 应该能够通知它已经结束读取管理器和接收器的输入数据源。

      摘要。到目前为止,我了解到,Py中的每个典型任务都有一个很好的lib /解决方案。我当前的任务有什么用吗?

1 个答案:

答案 0 :(得分:2)

由于CPython的性质(参见),如果您的任务是CPU而不是I / O绑定,则需要使用多个进程而不是线程。 Python附带multiprocessing模块,其中包含完成工作所需的一切。具体来说,它具有pools和线程安全queues

在您的情况下,您需要一个传递给每个worker的输入和输出队列,并且它们从输入队列中异步读取并写入输出队列。单线程生产者/消费者只需在各自的队列中运行,只保留内存中所需的内容。这里唯一可能的怪癖是输出顺序可能与输入的顺序无关。

注意:您可以与JoinableQueue班级进行沟通。