小编lev*_*lev的帖子

在pandas表中插入一个链接

我想在pandas表中插入一个链接(到一个网页),所以当它在ipython笔记本中显示时,我可以按链接.

我尝试了以下方法:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame(range(5), columns=['a'])

In [3]: df['b'] = df['a'].apply(lambda x: 'http://example.com/{0}'.format(x))

In [4]: df
Out[4]:
   a                     b
0  0  http://example.com/0
1  1  http://example.com/1
2  2  http://example.com/2
3  3  http://example.com/3
4  4  http://example.com/4
Run Code Online (Sandbox Code Playgroud)

但是网址只显示为文字.

我也尝试过使用ipython HTML对象:

In [5]: from IPython.display import HTML

In [6]: df['b'] = df['a'].apply(lambda x:HTML('http://example.com/{0}'.format(x)))

In [7]: df
Out[7]:
   a                                                 b
0  0  <IPython.core.display.HTML object at 0x0481E530>
1  1  <IPython.core.display.HTML object at 0x0481E770>
2  2  <IPython.core.display.HTML object at …
Run Code Online (Sandbox Code Playgroud)

python pandas ipython-notebook

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

scala如何命令元组?

我试图了解scala如何处理元组的排序和排序

例如,如果我得到了列表

val l = for {i <- 1 to 5} yield (-i,i*2)
Vector((-1,2), (-2,4), (-3,6), (-4,8), (-5,10))
Run Code Online (Sandbox Code Playgroud)

scala知道如何排序:

l.sorted
Vector((-5,10), (-4,8), (-3,6), (-2,4), (-1,2))
Run Code Online (Sandbox Code Playgroud)

但是元组没有'<'方法:

l.sortWith(_ < _)

error: value < is not a member of (Int, Int)
l.sortWith(_ < _)
Run Code Online (Sandbox Code Playgroud)

scala如何知道如何对这些元组进行排序?

scala

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

将正在运行的ipython笔记本与进程匹配

我的服务器运行许多长时间运行的笔记本电脑,我想监控笔记本电脑的内存.

有没有办法在pid或进程名称和笔记本之间进行匹配?

ipython ipython-notebook

11
推荐指数
4
解决办法
3939
查看次数

在盐状态之间传递变量

在Saltstack中,我有以下用例:

有一个状态redis.sls可以包含在其他州.redis.sls的结果应该以不同的方式配置,具体取决于包含redis.sls的状态.

例如:

redis.sls:
--------
{% if x==1 %}
   #do something
{% else %}
   #do something else
{% endif %}


state_a.sls
-----------
{% set x=1 %}
include:
  - redis

state_b.sls
-----------
{% set x=2 %}
include:
  - redis
Run Code Online (Sandbox Code Playgroud)

但*在*state_a*和*state_b*中无法识别x

我也尝试用这样的东西设置支柱值:

{{salt['pillar.set']('x', 1)}}
Run Code Online (Sandbox Code Playgroud)

但那也不起作用.

还有其他想法吗?

salt-stack

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

在线程中的任何位置获取当前celery任务ID

我想在正在运行的任务中获取任务ID,而不知道我在哪个任务.(这就是为什么我不能使用/sf/answers/566726051/)

我希望它是这样的:

@task
def my_task():
    foo()

def foo():
    logger.log(current_task_id)
Run Code Online (Sandbox Code Playgroud)

这种模式在许多不同的任务中返回,我不想将任务上下文带到每个内部方法调用.

一个选项可能是使用线程本地存储,但是我需要在任务启动之前初始化它,并在完成后清理它.

有什么比这更简单的了吗?

python celery celery-task django-celery

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

通过谓词拆分迭代器

我需要一个可以分成Iterator[Char]行的方法(用\n和分隔\r)

为此,我编写了一个获取迭代器和谓词的通用方法,并在每次谓词为真时拆分迭代器.这类似于span,但每次谓词为真时都会拆分,而不仅仅是第一次

这是我的实施:

def iterativeSplit[T](iterO: Iterator[T])(breakOn: T => Boolean): Iterator[List[T]] = 
 new Iterator[List[T]] {
  private var iter = iterO
  def hasNext = iter.hasNext

  def next = {
    val (i1,i2) = iter.span(el => !breakOn(el))
    val cur = i1.toList
    iter = i2.dropWhile(breakOn)
    cur
  }
}.withFilter(l => l.nonEmpty)
Run Code Online (Sandbox Code Playgroud)

并且它适用于小输入,但在大输入时,这运行非常慢,有时我会得到堆栈溢出异常

这是重新创建问题的代码:

val iter = ("aaaaaaaaabbbbbbbbbbbccccccccccccc\r\n" * 10000).iterator
iterativeSplit(iter)(c => c == '\r' || c == '\n').length
Run Code Online (Sandbox Code Playgroud)

运行期间的堆栈跟踪是:

... 
at scala.collection.Iterator$$anon$1.hasNext(Iterator.scala:847)
at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:615)
at scala.collection.Iterator$$anon$1.hasNext(Iterator.scala:847)
at scala.collection.Iterator$$anon$18.hasNext(Iterator.scala:591) …
Run Code Online (Sandbox Code Playgroud)

iterator scala

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

我可以使用本地模板(不是 GitHub)运行 sbt new 吗?

我在一个安全的环境中工作,不允许开发人员从 GitHub 或任何其他外部存储库进行 git-clone。

我能够从 GitHub 下载 g8 模板 (play-scala-seed) 作为 zip 文件,并将其解压缩到本地文件夹。我可以使用该本地目录而不是 git repo 吗?

我第一次尝试失败:

> dir .\play-scala-seed
 Volume in drive C is OSDisk
 Volume Serial Number is A074-A016

 Directory of C:\workspace\play-scala-seed

03/22/2018  11:03 AM    <DIR>          .
03/22/2018  11:03 AM    <DIR>          ..
03/22/2018  11:01 AM    <DIR>          project
03/22/2018  10:57 AM    <DIR>          src
03/22/2018  11:03 AM    <DIR>          target
03/22/2018  10:57 AM                70 .gitignore
03/22/2018  10:57 AM               509 .travis.yml
03/22/2018  10:57 AM               453 build.sbt
03/22/2018  10:57 AM               439 LICENSE
03/22/2018 …
Run Code Online (Sandbox Code Playgroud)

scala sbt giter8

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

自动重构为string.Format

我在VS2008中有一个ac #project,它有很多代码行,如下所示:

string s = "bla blab" + x + "bla bla bla" + y + .... ;
Run Code Online (Sandbox Code Playgroud)

我想使用string.Format(...)将这些字符串转换为单个字符串.

我目前正在使用Resharper 5.0,我只需点击一下即可重构一行代码.问题是我有更多这样的1000行,我不想手动遍历每一行.

有没有办法自动执行此操作?

编辑:正如Marc纠正我,我真的不需要这样做,但我有另一个非常类似的问题:我得到了这个代码

 string s = "aaaaaaaaaaaaaaaaaaaaaaaa" +
                   "aaaaaaaaaaaaaaaaaaaaaaaa" +
                   "aaaaaaaaaaaaaaaaaaaaaaaa" +
                   "aaaaaaaaaaaaaaaaaaaaaaaa" +
                   "aaaaaaaaaaaaaaaaaaaaaaaa" +
                   "aaaaaaaaaaaaaaaaaaaaaaaa" +
                   "aaaaaaaaaaaaaaaaaaaaaaaa";
Run Code Online (Sandbox Code Playgroud)

(该字符串是一些SQL查询)

我想将它重构为一个const字符串:

string s = "aaaaaaaaaaaaaaaaaa....aaaaa";
Run Code Online (Sandbox Code Playgroud)

(这次,效率更高吧?)

resharper可以每个字符串自动执行此操作,但同样,我想多次执行此操作.

保持线条缩进会很棒:

string s = @"aaaaaaaaaaaaaaaaaaaaaaaa
                    aaaaaaaaaaaaaaaaaaaaaaaa
                    aaaaaaaaaaaaaaaaaaaaaaaa
                    aaaaaaaaaaaaaaaaaaaaaaaa
                    aaaaaaaaaaaaaaaaaaaaaaaa
                    aaaaaaaaaaaaaaaaaaaaaaaa
                    aaaaaaaaaaaaaaaaaaaaaaaa";
Run Code Online (Sandbox Code Playgroud)

但只有一条长线也可以.

谢谢,列夫.

c# string automated-refactoring visual-studio

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

在元构建级别运行 sbt 命令

sbt 允许我们在根项目级别运行 sbt 命令。

如何在元构建级别运行命令?(在root/project/project目录中定义)

我的用例是我的一些 sbt 插件具有相同依赖项的不同版本,并且旧的依赖项被逐出。我想使用 sbt-dependency-graph 进行调查

sbt sbt-plugin

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

调整芹菜以获得高性能

我正在尝试发送~400个HTTP GET请求并收集结果.我是从django跑来的.我的解决方案是使用芹菜与gevent.

要启动芹菜任务,我调用get_reports:

def get_reports(self, clients, *args, **kw):
    sub_tasks = []
    for client in clients:  
            s = self.get_report_task.s(self, client, *args, **kw).set(queue='io_bound')
        sub_tasks.append(s)
    res = celery.group(*sub_tasks)()
    reports = res.get(timeout=30, interval=0.001)
    return reports

@celery.task
def get_report_task(self, client, *args, **kw):
    report = send_http_request(...)
    return report
Run Code Online (Sandbox Code Playgroud)

我用4个工人:

manage celery worker -P gevent --concurrency=100 -n a0 -Q io_bound
manage celery worker -P gevent --concurrency=100 -n a1 -Q io_bound
manage celery worker -P gevent --concurrency=100 -n a2 -Q io_bound
manage celery worker -P gevent …
Run Code Online (Sandbox Code Playgroud)

python django performance rabbitmq celery

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

函数参数的模式匹配

我有一个元组的向量

val l = for {i <- 1 to 5} yield (i,i*2)
Vector((1,2), (2,4), (3,6), (4,8), (5,10))
Run Code Online (Sandbox Code Playgroud)

我想用以下方式总结一下:

l.reduce((x,y) => (x._1+y._1, x._2+y._2))
(15,30)
Run Code Online (Sandbox Code Playgroud)

但是使用模式匹配.

如果函数只获得一个参数,我知道如何做到这一点,即:l.map({case(a,b)=>a+b})但是我无法使用两个参数.这是我试图做的:

l.reduce({(case(a,b),case(c,d))=>(a+c,b+d)})
Run Code Online (Sandbox Code Playgroud)

但那不行.

所以我的问题是,如何解包作为函数参数出现的2个元组?

scala

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

用scala-mock嘲笑一个特征的val

我想嘲笑一个特质的val.例如,在这段代码中,要模拟val baz:

trait Foo {
  def bar(): Int
  val baz: Int
}

val fooMock = mock[Foo]
(fooMock.bar _).expects().returning(5)
(fooMock.baz _).expects().returning(6) //doesn't compile

doSomeThing(fooMock)
Run Code Online (Sandbox Code Playgroud)

为了在我的测试中解决这个问题,我扩展了Foo,并baz以下列方式实现:

trait FooTest extends Foo {
  override val baz: Int = 5
}

val fooMock = mock[FooTest]
(fooMock.bar _).expects().returning(6)

doSomeThing(fooMock)
Run Code Online (Sandbox Code Playgroud)

但这很难看,而且我希望scala mock有更标准的方法.

我已经看到了这个问题的答案的问题,但它需要改变val,以def在他们的特性,我想保持baz一个VAL

unit-testing scala mocking scalamock

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