小编Joh*_*ith的帖子

为什么进程替换并不总是与bash中的while循环一起使用?

进程替换工作与文件名细,比如他们都

$ cat <FILENAME
Run Code Online (Sandbox Code Playgroud)

$ while read i; do echo $i; done <FILENAME
Run Code Online (Sandbox Code Playgroud)

工作.

但是如果我们使用echo命令(或任何其他生成输出到stdout的命令)而不是FILENAME ,则cat继续工作

$ cat <(echo XXX)
XXX
Run Code Online (Sandbox Code Playgroud)

而循环

$ while read i; do echo $i; done <(echo XXX) 
bash: syntax error near unexpected token `<(echo XXX)'
Run Code Online (Sandbox Code Playgroud)

产生错误.

有什么想法吗?

bash process substitution while-loop

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

使用 pandas 运行分析报告时出错,给出错误“TypeError:describe_boolean_1d() 获得意外的关键字参数 'title'”

我正在使用下面的代码

profile = ProfileReport(df, title='Pandas Profiling Report', html={'style':{'full_width':True}})
Run Code Online (Sandbox Code Playgroud)

运行配置文件报告但出现此错误

"TypeError: describe_boolean_1d() got an unexpected keyword argument 'title'"
Run Code Online (Sandbox Code Playgroud)

当我删除标题时,出现此错误

"TypeError: describe_boolean_1d() got an unexpected keyword argument 'html'"
Run Code Online (Sandbox Code Playgroud)

pandas

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

在openmp中读取数据时是否会发生错误共享?

如果我有一个带有OpenMP并行化的C++程序,其中不同的线程经常只使用一些小的共享数组来从中读取数据,在这种情况下是否会发生错误共享?换句话说,虚假共享仅与存储器写操作有关,或者也可能与存储器读操作有关.

c++ openmp false-sharing

4
推荐指数
2
解决办法
489
查看次数

sed用单个空行替换多个空行

我编写了一个sed脚本,用一个替换多个空白行,但它没有按预期工作.我将感谢所有能解释我原因的人.请不要参考我的工作示例,我熟悉Google.我只是想了解sed是如何工作的.

代码是

sed ':a;/^\n*$/{N;ba};s/^\n\n*/\n/' input_file
Run Code Online (Sandbox Code Playgroud)

所以逻辑很简单:当sed读取行并且它是空白或有几个换行符号(这是/^*\n$条件)时,我告诉sed将下一行附加到模式空间.一旦找到非空白行,s/^\n\n*/\n/就完成替换.

除了我在文件末尾有空行的情况外,一切正常.这些空白不会被一个空白所取代,我不明白为什么.

有任何想法吗?

regex sed blank-line

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

size_t除以int类型转换规则

当我使用size_t类型(或无符号长整数)进行算术运算时,我应该多么小心地使用类型文字来装饰整数常量.例如,

size_t a = 1111111;
if (a/2 > 0) ...;
Run Code Online (Sandbox Code Playgroud)

当编译器进行除法时会发生什么?它将2视为整数还是无符号整数?如果是前者,那么(unsigned int)/(int)的结果类型是什么?

我应该经常小心地写'你'文字

if (a/2u > 0) ...;
for (a=amax; a >= 0u; a -= 3u) ...;
Run Code Online (Sandbox Code Playgroud)

或编译器会正确猜测我想使用无符号整数运算?

c c++ type-conversion literals

3
推荐指数
2
解决办法
3083
查看次数

高效的多线程算法,用于处理没有死锁的对列表

假设我们有整数从0n-1(让我们说,我们有n图像,并使用该指数识别它们),并与对这些整数的向量.在这里我们如何创建这些对并不是很重要,但只是为了可视化问题,我们可以说对是那些具有共同区域的图像.

我们的任务是使用多个线程处理所有可用对.如果要求只是每个对都可以被一个线程占用,那么任务就很简单:我们可以使用互斥对象的每个元素.但在我的情况下,情况更加困难:如果某些线程处理一对(m,n),另一个线程无法使用任何一对由两种mn.

对每个图像使用互斥锁的简单解决方案是不足的.例如,让我们说我们有图片0,1,2,3和对(0,1),(1,2),(2,3),(3,0).如果算法使用一对互斥锁,然后为每个图像使用两个互斥锁,则可能出现死锁:th_0将处理对(0,1),th_1- 对(1,2),th_2- 对(2,3)th_3- 对(3,0).然后每个线程将使用互斥锁用于单个图像.

th_0: lock 0, lock 1
th_1: lock 1, lock 2
th_2: lock 2, lock 3
th_3: lock 3, lock 0
Run Code Online (Sandbox Code Playgroud)

th_0将锁定图像0,th_1将锁定图像1,但随后th_0将停止,因为它将尝试锁定1已锁定的图像.所有其他线程都会发生同样的情况.

似乎为了实现目标,每个线程必须用对锁定整个向量以避免死锁,这似乎不是一个好的解决方案.这是正确的吗?这个问题有更好的解决方案吗?我想到的唯一解决方案是将互斥锁用于图像以及线程优先级信息.例如,如果第二个图像被锁定,则线程将检查锁定线程的线程ID是否更高,然后它应该释放第一个图像上的锁定并继续.它会工作还是我可以再次陷入僵局?

algorithm multithreading

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

dbus 接口 xml 文件的用途是什么?

我正在阅读D-Bus API 设计指南

公共API的接口文件应安装到$(datadir)/dbus-1/interfaces,以便其他服务可以加载它们。

好的...为了了解这些接口文件的工作原理,我打开该文件/usr/share/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml(我使用的是 Ubuntu 20.04)

<node>
  <interface name="org.gnome.Shell.Screenshot">
  ...
    <method name="PickColor">
      <arg type="a{sv}" direction="out" name="result"/>
    </method>
Run Code Online (Sandbox Code Playgroud)

好吧,我看到了接口名称,我看到了方法名称,但这还不够。如果我想使用调用这个方法dbus-send

$ dbus-send --print-reply --dest=<service.name> </path/to/object> org.gnome.Shell.Screenshot.PickColor
Run Code Online (Sandbox Code Playgroud)

我需要<service.name><path/to/object>,该xml文件没有提供。

问题是:如果该文件没有提供有关服务接口的完整信息,那么该文件的用途是什么?它是否被dbus-daemon其他程序使用?某些东西真的需要这样的文件吗?我是否应该得出这样的结论:未提供 中对象路径的 xml 文件是不完整的?此类文件是否还应该提及服务已知名称(org.gnome.Shell.Screenshot在本例中)?

dbus configuration-files

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