Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python诅咒,在不同的连续颜色上缓慢刷新_Python_Macos_Performance_Refresh_Curses - Fatal编程技术网

Python诅咒,在不同的连续颜色上缓慢刷新

Python诅咒,在不同的连续颜色上缓慢刷新,python,macos,performance,refresh,curses,Python,Macos,Performance,Refresh,Curses,使用python->curses模块,我体验到了一个非常缓慢的过程 如果我经常更改字符串颜色,请绘制/刷新。 我用C++编写了同样的程序,没有问题。 代码: 它很慢,因为程序发送一个转义序列来更改屏幕上每个单元格的颜色 也就是说,不只是发送'█'(3字节UTF-8字符串),它还发送颜色信息。以可读的形式(使用),类似以下内容: \E[31m \E[40m\342\226\210 \E[33m \E[40m\342\226\210 \E[31m \E[40m\342\226\210 ... 因为

使用python->curses模块,我体验到了一个非常缓慢的过程 如果我经常更改字符串颜色,请绘制/刷新。 我用C++编写了同样的程序,没有问题。 代码:


它很慢,因为程序发送一个转义序列来更改屏幕上每个单元格的颜色

也就是说,不只是发送
'█'(3字节UTF-8字符串),它还发送颜色信息。以可读的形式(使用),类似以下内容:

\E[31m
\E[40m\342\226\210
\E[33m
\E[40m\342\226\210
\E[31m
\E[40m\342\226\210
...

因为curses同时为每个单元格写入前景色和背景色(因为少数终端无法独立完成)。转义序列为10个字节,数据为3个字节,使其速度慢了大约4倍。

这是因为程序发送转义序列来更改屏幕上每个单元格的颜色

也就是说,不只是发送
'█'(3字节UTF-8字符串),它还发送颜色信息。以可读的形式(使用),类似以下内容:

\E[31m
\E[40m\342\226\210
\E[33m
\E[40m\342\226\210
\E[31m
\E[40m\342\226\210
...

因为curses同时为每个单元格写入前景色和背景色(因为少数终端无法独立完成)。这是转义序列的10字节,数据的3字节,使它慢了大约4倍。

但是为什么C++中编写的代码非常快?即使我改变了█' 例如,“A”的字符仍然很慢。Python是一个解释器,并且比C++中的编译器应用程序要做的工作要多。我认为发送的数据量不是问题,因为正如我所说的,只有当颜色交替时才慢。如果我只使用一个颜色对,那么发送的数据量是相同的,但是它的工作速度非常快。如果你只使用一个颜色对,没有颜色的切换,没有转义序列。我有相同的问题,但是用C++编写的应用程序,有没有办法加快刷新多色屏幕?但是为什么用C++编写的代码是非常快的?即使我改变了█' 例如,“A”的字符仍然很慢。Python是一个解释器,并且比C++中的编译器应用程序要做的工作要多。我认为发送的数据量不是问题,因为正如我所说的,只有当颜色交替时才慢。如果我只使用一个颜色对,那么发送的数据量是相同的,但是它工作得非常快。如果你只使用一个颜色对,没有颜色转换,没有转义序列。我有相同的问题,但是用C++编写的应用程序,有没有办法加快刷新多色屏幕?