我有两本字典
一:
default = {"val1": 10, "val2": 20, "val3": 30, "val4": 40}
Run Code Online (Sandbox Code Playgroud)
二:
parsed = {"val1": 60, "val2": 50}
Run Code Online (Sandbox Code Playgroud)
现在,我想以这样一种方式组合这两个字典,即两个字典中存在的键的值都从字典中取出parsed,其余的键default和它们的值都放入新字典中。
对于上面给出的字典,新创建的字典将是,
updated = {"val1": 60, "val2": 50, "val3": 30, "val4": 40}
Run Code Online (Sandbox Code Playgroud)
对此进行编码的显而易见的方法是遍历 in 中的键default并检查它是否存在,parsed然后将其放入一个新列表中updated,并且在同一检查的 else 子句中,我们可以使用来自 的值default。
我不确定这是一种 Pythonic 的方式还是一种更简洁的方法。有人可以帮忙吗?
这是一个非常面向初学者的问题。我一直在研究常规 python 线程和 C 线程,并了解到我可以创建运行特定函数的线程,并且它们使用信号量和其他同步原语。
但是,我目前正在尝试使用 numba 的基于 python 的编译器来学习 Cuda。我编写了以下代码。
from numba import cuda
import numpy as np
@cuda.jit
def image_saturate(data):
pos_x, pos_y = cuda.grid(2)
if (pos_x, pos_y) <= data.shape:
data[pos_x, pos_y] = 1
if __name__ == "__main__":
image_quality = (128, 72)
image = np.zeros(image_quality)
thread_size = 32
block_size = image_quality
image_saturate[block_size, thread_size](image)
print(image)
Run Code Online (Sandbox Code Playgroud)
但是,我觉得奇怪的是,我可以thread_size随心所欲地改变,结果是一样的——这意味着输出都是预期的。但是,当我改变的那一刻,block_size奇怪的事情开始发生,只有原始矩阵的大小被填充 - 所以它只是部分填充。
由此我了解到返回cuda.grid(2)块坐标。但是,我不应该能够获得实际的线程坐标和块坐标吗?
我是个新手,找不到任何在线学习资源。如果有人能回答我的问题并提供使用 Numba 学习 Cuda 的资源,那就太好了。