小编Roh*_*kan的帖子

结合两个字典,优先选择其中之一 -

我有两本字典

一:

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 grouping dictionary

6
推荐指数
2
解决办法
626
查看次数

numba中关于CUDA线程的一个简单问题

这是一个非常面向初学者的问题。我一直在研究常规 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 的资源,那就太好了。

python jit cuda numba

1
推荐指数
1
解决办法
2785
查看次数

标签 统计

python ×2

cuda ×1

dictionary ×1

grouping ×1

jit ×1

numba ×1