小编neo*_*eon的帖子

bash:对命名管道的写入是原子的吗?

我正在尝试使用bash并行处理文件集.我正在使用命名管道来保持进程数量并从进程中收集输出.

我假设对命名管道的写入是原子的,即不同进程的输出没有混淆.这是一个安全的假设吗?

任何意见是极大的赞赏.我只限于使用bash.

这是代码:

mytask()
{
  wItem=$1
  #dummy func; process workItem
  rt=$RANDOM
  st=$rt;
  let "rt %= 2"
  let "st %= 10"
  sleep $st
  return $rt
}

parallelizeTask()
{
workList=$1
threadCnt=$2
task=$3
threadSyncPipeD=$4
outputSyncPipeD=$5

ti=0
for workItem in $workList; do
  if [ $ti -lt $threadCnt ]; then
    { $task $workItem; if [ $? == 0 ]; then result="success"; else result="failure"; fi; \
      echo "$result:$workItem" >&$outputSyncPipeD; echo "$result:$workItem" >&$threadSyncPipeD; } &
    ((ti++))
    continue;
  fi
  while read n; do
      ((ti--))
      break;
  done <&$threadSyncPipeD …
Run Code Online (Sandbox Code Playgroud)

bash multithreading named-pipes

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

matplotlib 中的图例对齐

我正在尝试使图例中的标签左对齐和值右对齐。在下面的代码中,我尝试了 format 方法,但值没有正确对齐。

非常感谢任何提示/建议。

import matplotlib.pyplot as pl

# make a square figure and axes
pl.figure(1, figsize=(6,6))

labels = 'FrogsWithTail', 'FrogsWithoutTail', 'DogsWithTail', 'DogsWithoutTail'
fracs = [12113,8937,45190, 10]

explode=(0, 0.05, 0, 0)
pl.pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
pl.title('Raining Hogs and Dogs', bbox={'facecolor':'0.8', 'pad':5})

legends = ['{:<10}-{:>8,d}'.format(labels[idx], fracs[idx]) for idx in    range(len(labels))]

pl.legend(legends, loc=1)

pl.show()
Run Code Online (Sandbox Code Playgroud)

matplotlib legend

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

标签 统计

bash ×1

legend ×1

matplotlib ×1

multithreading ×1

named-pipes ×1