我目前在我的网站上使用 python pygments 来突出显示一些代码,并想调整一些使用的颜色。到目前为止我已经尝试过以下方法:
from pygments.token import Keyword, Name, Comment, String, Error, \
Number, Operator, Generic
from pygments.formatters import HtmlFormatter
class MyStyle(Style):
styles = {
Comment: '#f00000',
Keyword: '#f00000',
Name: '#f00000',
Name.Function: '#f00000',
Name.Class: '#f00000',
String: '#f00000'
}
code = 'print("Hello World")'
result = highlight(code, Python3Lexer(), HtmlFormatter(style=MyStyle))
print(result)
Run Code Online (Sandbox Code Playgroud)
打印出
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"Hello World"</span><span class="p">)</span>
</pre></div>
Run Code Online (Sandbox Code Playgroud)
一起生成的 pygments.css 如下所示:
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #8f5902; font-style: italic } /* …Run Code Online (Sandbox Code Playgroud) 我目前正在研究一个问题,涉及使用FFTW与 MPI 结合计算二维矩阵的傅里叶变换。
根据FFTW 文档本页的第一部分,计算矩阵的 FT 需要在并行时启动的进程之间进行大量通信。例如,在矩阵的情况下,例如
1,2,3
4,5,6
7,8,9
Run Code Online (Sandbox Code Playgroud)
我们决定用三个进程来计算 FFT,每个进程都会获取该矩阵的一个块,以便数据作为 存储在每个进程的本地内存中P_0 [1,2,3], P_1 [4,5,6], P_3 [7,8,9]。
计算初始傅立叶变换后,计算转置,这需要在三个进程之间通信计算数据,如下所示:
P_0 -> P_1: 2
P_0 -> P_2: 3
P_1 -> P_0: 4
P_1 -> P_2: 6
P_2 -> P_0: 7
P_2 -> P_1: 8
Run Code Online (Sandbox Code Playgroud)
由于这会产生很大的开销,因此上述 FFTW 文档页面的第二部分建议直接在傅里叶空间中计算转置,以大大减少所需的跨进程通信量。
我仍然不确定为什么首先需要计算转置,以及最终如何合并从矩阵的不同块计算的数据。为什么设置FFTW_MPI_TRANSPOSED_OUT和FFTW_MPI_TRANSPOSED_IN标志就足够了,不再需要跨进程通信,即使在进程之前需要来自所有其他进程的更多数据?