gpt4 book ai didi

python - 使用多处理获取数据

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:50 25 4
gpt4 key购买 nike

我有一个函数发布到服务器(AWS Lambda)来执行 Base64 图像的 OCR:

def image_to_text(image64):
url = base_url + 'text-to-image'
data = json.dumps({'image64': image64})
r = requests.post(url, data)
r.raise_for_status()
return r.json()['text'].encode('utf-8')

该函数有效:image_to_text('some long string') 将返回正确的响应。

问题:并行(多进程)使用image_to_text会使应用程序在r = request.post(url,数据)

示例:

import multiprocessing as mp
from multiprocessing import cpu_count

p = mp.Pool(cpu_count())
p.map(image_to_text, ('A long string',
'Another long string'))
p.terminate()

问题:为什么我的应用程序停止运行以及如何使用多处理通过 requests 获取数据?

最佳答案

您的应用程序可能没有停止,但由于您通过传输大量数据,速度明显减慢。您所认为的“停止”实际上是很大的 IPC 开销。

来自多处理 programming guidelines .

Avoid shared state

As far as possible one should try to avoid shifting large amounts of data between processes.

依靠内部管道将数据传输到将执行您的image_to_text函数的工作人员。如果需要传送的数据量很大,这个管道就会成为瓶颈。在您的情况下,您来回发送的数据使需要序列化和传送的字节量加倍。

我建议您将数据转储到临时文件并仅将文件名发送到 image_to_textimage_to_text 将自动打开并读取文件中的数据。您会发现您的逻辑也变得更快、更健壮。

关于python - 使用多处理获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49255500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com