首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv与引起管道断裂的多工序

opencv与引起管道断裂的多工序
EN

Stack Overflow用户
提问于 2018-09-10 13:11:44
回答 1查看 333关注 0票数 2

我试图让图像处理使用多个进程,以提高速度/效率,但它总是给我一个坏管道错误。即使有代码

代码语言:javascript
复制
import cv2
import numpy as np
from multiprocessing import Process, freeze_support
def findRed(img, pipe):
    x = 5

frame = cv2.imread("test.jpg")
test = Process(target=findRed, args=(frame, 5))
test.start()
test.join()

如果我将框架设置为不使用imread的值,它不会给我坏掉的管道错误。有谁知道为什么会发生这种事,或者怎么解决?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 13:27:47

除了特殊分配的共享内存区域、信号量、互斥量等外,新进程不与其他进程共享内存空间和系统资源。因此,如果frame对象包括处理程序,就像管道对象一样,它在新的进程中是无效的/不可访问的。我就是这么理解的。根据Python multiprocessing, passing an object reference containig a semaphore,传递一个对象会导致对象通过管道进行复制,这可能是相关的。

一般来说,我建议不要将复杂的对象传递到过程中,它们可能被不正确地传递。

解决方案是传递“简单”值,如数字、字符串等。在您的示例中,您可以将一个文件名传递给进程,该进程将读取一个文件并处理它本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52258596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档