python - Python 中的多处理(HoG 功能) - 返回空数组
问题描述
尝试在大量图像数据集上提取 HoG 特征 - 总共 70K。所以 test_X 是 28x28x70000 我正在尝试使用 Pool。试用前 10 张图片
from multiprocessing import Pool
def get_hog(inputImg):
fd,hi=hog(inputImg, orientations=4, pixels_per_cell=(4, 4),
cells_per_block=(1, 1), visualize=True, multichannel=False)
return fd
with Pool(5) as p:
V = p.map(get_hog,test_X[:,:,range(0,10)]))
我最终在 V 中得到了空数组。
可能将数据传递给函数不正确?
解决方案
在 python 中的多处理中,应该始终尝试提供回调方法来存储来自进程的返回数据。因此,对于您的示例,我们可以使用池并在您的情况下在图像列表上运行池,test_X
并让回调处理池中每个进程返回的数据。这是示例代码:
import numpy as np
from multiprocessing import Pool
V=[]
test_X = np.transpose(test_x)
def get_hog(inputImg):
fd,hi=hog(inputImg, orientations=4, pixels_per_cell=(4, 4),
cells_per_block=(1, 1), visualize=True, multichannel=False)
return fd
def poolCallback(returnDataFromPool):
global V
V.append(returnDataFromPool)
p = Pool(5)
for x in test_X:
p.apply_async(get_hog ,args=(x,),callback=poolCallback)
p.close()
p.join()
推荐阅读
- sql - 基于日期评估的子查询JOIN
- swagger-codegen - 提供 Swagger Codegen 客户端的最佳实践
- python - Tkinter-关闭窗口的问题
- json - 在 MS Power Automate 中,如何使用另一个操作的结果填充动态属性下拉值?
- android - 如何在kotlin中按降序过滤列表数据?
- azure-devops - 在 Azure DevOps 中,有没有办法在网格视图中列出分配给开发人员和冲刺的所有工作项?
- java - 在 Windows 上运行 sdkmanager 时找不到或加载主类 java.se.ee'
- database - 我们如何通过在 PostgreSQL 中的 SQL 文件中写入命令将内容从数据库导入另一个数据库?
- kubernetes - 使用 kube-proxy 进行负载均衡
- c# - c# .net framework 4.8 webapp binding redirect 适用于笔记本电脑,但在通过构建服务器部署在 IIS 上时不起作用(我有一个 netstandard 依赖项)