【发布时间】:2017-09-06 19:05:05
【问题描述】:
我在 numpy.xml 中创建、相乘然后求和两个大矩阵的所有元素。我用两种方法做了几百次,一个循环和multiprocessing 模块的帮助(见下面的片段)。
def worker_loop(n):
for i in n:
mul = np.sum(np.random.normal(size=[i,i])*np.random.normal(size=[i,i]))
def worker(i):
mul = np.sum(np.random.normal(size=[i,i])*np.random.normal(size=[i,i]))
n = range(100,300)
pool = ThreadPool(2)
pool.map(worker, n)
pool.close()
pool.join()
worker_loop(n)
测量时间表明 循环 比multiprocessing 快。我也尝试了threading 模块但没有成功(然后我读到这是一个坏主意;阅读更多here)
我开始尝试多线程,因为我需要将图像、标签、边界框等转换为 tfrecord。为此,我正在研究来自 tensorflow/inception 的文件(如果您想了解build_imagenet_data.py, line 453)。我相信多线程在这里起作用,这就是他们使用它的原因。
说到这里,我的问题可以如下提出,
- 我的代码中缺少什么;是否可以通过一些小的修改来实现某些目标?
- 是否因为 tensorflow 是用 c++ 和 CUDA 编写的,所以 inception 中的示例是否有效?
- 什么时候最好使用带有 numpy、tensorflow 等的多处理或多线程?
【问题讨论】:
标签: python-2.7 numpy tensorflow python-multiprocessing python-multithreading