【问题标题】:Multiprocessing with Python 3.X ( image processing and numpy )使用 Python 3.X 进行多处理(图像处理和 numpy)
【发布时间】:2016-10-21 15:28:46
【问题描述】:

我正在开始一个新项目来学习 python 并获得一些乐趣。不幸的是,我在不同进程之间共享资源时遇到了一些问题。

这里是项目的快速介绍:我正在使用库进行图像处理(python 3.X 的 PIL)、OpenCV 和 Numpy(似乎在大多数 python 项目中都使用)。

该项目的目的是使用 Pillow 获取图像,然后将它们发送到 OpenCV 进行一些处理。特殊之处在于两个进程在一定时间内同时运行。

我对 Numpy 进行了一些研究,得出的结论是 Numpy 非常适合多处理,并且它也与这两个库兼容。 我在官方网站上看到了不同的方法来完成这样的任务,但我不知道哪一种是最好的选择。 我从 Pillow 获取图像,这些图像转换为 numpy 的表格,我想将这些 numpy 表格发送到 OpenCV,但表格的行为与我在官方网站上看到的不同。

我认为多处理是我想做的最好的选择,但也许我错了,尽管有 GIL,但多线程更合适。 我正在寻找一种高效而强大的解决方案:)。

任何帮助、建议、示例将不胜感激:)。

【问题讨论】:

  • 这个问题真的很难回答,因为没有具体的例子或代码,也没有任何以问号结尾的句子:-)。当您说“表格的行为与我在官方网站上看到的不同”时,您是什么意思?

标签: python-3.x opencv numpy python-imaging-library


【解决方案1】:

你说得对,这不是很清楚。这是我写的一些代码作为基础。我尝试正常运行它但没有成功:如果你有一些线索来解决它?

def processscreen(queuescreen):
    # add while later
    process = ScreenManager()                            # my pillow class
    listscreen = process.capture()                       # numpy.array 900 * 600
    queuescreen.put(540000, np.reshape(listscreen, -1))  # just a try


def processinformations(queuescreen):
    # add while later
    process = InformationManager()                       # my opencv class
    # don't know if try catch is useful here just one thing i add during my try
    try:
        process.screen_array = queuescreen.get()
    except Exception as err:
        # just a print
        settings.out(settings.ERROR, settings.ERROR, 'processinformations get listscreen : ' + str(err))
    # after here some work with InformationManager()


if __name__ == '__main__':
    queuescreen = Queue()
    s = multiprocessing.Process(target=processscreen, args=(queuescreen,))
    i = multiprocessing.Process(target=processinformations, args=(queuescreen,))

    i.start()
    s.start()

    i.join()
    s.join()

【讨论】:

    猜你喜欢
    • 2012-02-24
    • 2018-01-24
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多