如何在保持输入输出顺序的同时并发处理多个任务?

2024-06-16 11:50:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

有没有这样一种模式:gevent可以并行执行任务列表,但以某种方式保持结果在列表中提交的顺序不变?我必须记住,返回的结果是相当大的,我正在努力保持尽可能低的内存需求。你知道吗


Tags: 文件数据项目对象内存字符串程序列表
1条回答
网友
1楼 · 发布于 2024-06-16 11:50:37

这是一个非常简单的方法,但可能会在您概述的约束范围内工作。但是,它不直接使用gevent。你知道吗

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

相关问题 更多 >