python - python中的Numba用于更快的哈希
问题描述
我正在尝试创建一个能够创建 x 字符串然后使用 SHA-256 对它们进行哈希处理的程序。我在 python 3.8.6 中这样做。我的代码在我的 CPU 上运行良好,但我希望在执行重复性任务时展示 CPU 和 GPU 在速度方面的差异。
现在它看起来像这样:
import hashlib
import string
import random
import time
from multiprocessing import Pool
from numba import jit
#@jit(nopython=True)
def strings(b):
x = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(120))
return x
@jit(nopython=True)
def hasha(a):
kette = a
encoded = kette.encode()
result = hashlib.sha256(encoded)
hex = result.hexdigest()
return hex
if __name__ == '__main__':
pool = Pool()
start_time = time.time()
c = pool.map(strings, range(0, 100000))
pool.map(hasha, c)
pool.close()
pool.join()
print("--- %s seconds ---" % (time.time() - start_time))
我发现 numba 并阅读,它可以编译代码以在 GPU 上运行。尝试了一段时间后,我无法想出适用于我的 numba 的代码。我得到的第一个错误是:“不支持在闭包中使用 yield。”。我“修复”了不使用 numba 编译 strings() 函数的问题。
第二个错误发生在 hasha() 中,如下所示:“unicode_type 类型的未知属性‘编码’”
我的猜测是,numba 不知道我正在使用的某些功能。
我是对的,还是还有其他问题?有没有人知道 numba 甚至其他任何东西的解决方法,除了 numba,我可以展示几乎相同的代码如何在 GPU 上运行得更快?只是提醒一下,我没有 nvidia GPU,我使用 AMD RX580,所以在我的理解中我不能在 Cuda 中使用任何东西。
我也尝试使用 pyopencl 但我无法真正使用它。
谢谢!此致!
解决方案
推荐阅读
- laravel - 在 laravel 上编辑数据时无法更新图像
- python - 如何在python中检查从GUI输入的字符串的有效性
- html - 与 HTML 相关的“布局”的工作定义是什么?
- python-3.x - 在python 3中使用tkinter按下按钮后如何删除按钮?
- java - 方法不会覆盖或实现超类型 ExoPlayer 中的方法
- firebase - Firebase 安全规则 newData 不起作用
- cucumber - 标签过滤系统 - Cucumber
- node.js - 在“npm start”上使用 WSL + Electron + Typescript 获取 SUID Sandbox Helper 错误
- html - CSS 网格日历 - 事件时间跨度
- raku - 如何打印一个对象,输入 nqp