我正在使用Python中的文本进行大量工作,但我对该语言不熟悉,并且还不知道如何在Py中使用多线程。
我的用例如下:
数据量巨大,除了内存中的当前数据外,所有处理都无法保留任何内容。
我会按以下方式组织这个过程:
Beyound所有 Producer 应该能够通知它已经结束读取管理器和接收器的输入数据源。
摘要。到目前为止,我了解到,Py中的每个典型任务都有一个很好的lib /解决方案。我当前的任务有什么用吗?
答案 0 :(得分:2)
由于CPython的性质(参见gil),如果您的任务是CPU而不是I / O绑定,则需要使用多个进程而不是线程。 Python附带multiprocessing
模块,其中包含完成工作所需的一切。具体来说,它具有pools和线程安全queues。
在您的情况下,您需要一个传递给每个worker的输入和输出队列,并且它们从输入队列中异步读取并写入输出队列。单线程生产者/消费者只需在各自的队列中运行,只保留内存中所需的内容。这里唯一可能的怪癖是输出顺序可能与输入的顺序无关。
注意:您可以与JoinableQueue
班级进行沟通。