Python中文
首页
教程
问答
标签
搜索
登录
注册
Python中的并行CPU求和
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个求和的循环:</p> <pre><code>for t in reversed(range(len(inputs))): dy = np.copy(ps[t]) dy[targets[t]] -= 1 dWhy += np.dot(dy, hs[t].T) dby += dy </code></pre> <p>输入值太大,我必须使它并行。所以我把循环转换成一个单独的函数。我尝试过使用ThreadPoolExecutor,但是结果时间比顺序算法慢。你知道吗</p> <p>这是我最简单的工作示例:</p> <pre><code>import numpy as np import concurrent.futures import time, random from concurrent.futures import ThreadPoolExecutor import threading #parameters dWhy = np.random.sample(300) dby = np.random.sample(300) def Func(ps, targets, hs, t): global dWhy, dby dy = np.copy(ps[t]) dWhy += np.dot(dy, hs[t].T) dby += dy return dWhy, dby if __name__ == '__main__': ps = np.random.sample(100000) targets = np.random.sample(100000) hs = np.random.sample(100000) start = time.time() for t in range(100000): dy = np.copy(ps[t]) dWhy += np.dot(dy, hs[t].T) dby += dy finish = time.time() print("One thread: ") print(finish-start) dWhy = np.random.sample(300) dby = np.random.sample(300) start = time.time() with concurrent.futures.ThreadPoolExecutor() as executor: args = ((ps, targets, hs, t) for t in range(100000)) for out1, out2 in executor.map(lambda p: Func(*p), args): dWhy, dby = out1, out2 finish = time.time() print("Multithreads time: ") print(finish-start) </code></pre> <p>在我的电脑上,单线程时间~3s,多线程时间~1分钟。你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>将lambda转换为命名函数。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
合并Pandas字典DataFram
9 回答
合并pandas数据帧,使用列操作
9 回答
合并pandas数据帧,其中一个值位于另两个值之间
6 回答
合并pandas数据帧:在中创建的空列
10 回答
合并pandas数据帧:如何找出导致
1 回答
合并Pandas数据帧:选择较小的绝对值
2 回答
合并Pandas数据帧(左连接样式)会产生奇怪的结果
6 回答
合并Pandas数据帧中两列的值,应用函数进行重复数据消除和合并
7 回答
合并pandas数据帧中的2列,用前面的值填充nan
5 回答
合并Pandas数据帧会复制一些数据
5 回答
合并pandas数据帧列表
7 回答
合并pandas数据帧占用了太多内存
9 回答
合并pandas数据帧时如何保留列多索引值
3 回答
合并Pandas数据帧的所有列
8 回答
合并pandas数据帧而不更改原始列名
4 回答
合并Pandas数据框,如果字符串df2.domain出现在df.u中
8 回答
合并pandas数据框,无需按特定顺序排列
1 回答
合并pandas数据框中可变数量的行
4 回答
合并Pandas数据框作为分组后的结果
9 回答
合并Pandas时匹配子字符串
4 回答