Python 如何同时处理多个任务,同时维护输入和输出的顺序;输出?

Python 如何同时处理多个任务,同时维护输入和输出的顺序;输出?,python,parallel-processing,queue,gevent,Python,Parallel Processing,Queue,Gevent,目前,有一个Python项目使用gevent将执行套接字调用的任务提交给我们的一个计算资源。python程序生成近1000个对象的请求并并发执行它们。当它接收到请求(固定宽度字符串流)时,它会将输出直接写入一个文件,并在收到任务结果时附加到此文件。这样可以降低内存开销并尽可能快地移动内容 现在,与所有项目一样,引入了一个新的需求。Python解决方案需要对文件中的数据进行排序。使这一点复杂化的是,输出文件的宽度是固定的,在Python中对其进行切片/排序将是太多的一次性工作 是否存在这样一种模式

目前,有一个Python项目使用
gevent
将执行套接字调用的任务提交给我们的一个计算资源。python程序生成近1000个对象的请求并并发执行它们。当它接收到请求(固定宽度字符串流)时,它会将输出直接写入一个文件,并在收到任务结果时附加到此文件。这样可以降低内存开销并尽可能快地移动内容

现在,与所有项目一样,引入了一个新的需求。Python解决方案需要对文件中的数据进行排序。使这一点复杂化的是,输出文件的宽度是固定的,在Python中对其进行切片/排序将是太多的一次性工作


是否存在这样一种模式,
gevent
可以并行执行任务列表,但以某种方式将结果保持在列表中提交的相同顺序?我必须记住,返回的结果是相当大的,我正试图将内存需求保持在尽可能低的水平。

这是一种非常简单的方法,但可能在您概述的限制范围内工作。但是,它不直接使用gevent


将每个任务的输出写入根据任务id(顺序)命名的临时文件。所有任务完成后,按顺序读取文件,并将每个文件的内容附加到最终输出文件中。因此,在任何给定的时间,只有一个任务输出的内容在内存中。

我对这个选项进行了修改,它确实有意义。我会再给它几天的时间,如果没有其他选择,我会把这个标记为答案。考虑到没有选择,我想我会把这个标记为我的答案。谢谢