小编tam*_*gal的帖子

PyMinuit vs IMinuit

我在Python 2.7上寻找一个等同的服装,我发现了这两个变种:
PyMinuit
iMinuit.

我的问题是:它们之间有什么区别?

两者都使用了Seal 1.7.9 Minuit,并且在一些2D高斯拟合测试中我都给出了相同的答案.那么,除了安装方法(iMinuit更容易)之外,我为什么要选择一个呢?


谢谢你的帮助!的xD

PS我试图标记iminuit但我无法创建新标签... = /

python minimization pyminuit iminuit

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

使用NSCalendar检索月份的第一天

我执行以下代码片段:

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 
[comp setDay:1]; 

NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];
Run Code Online (Sandbox Code Playgroud)

firstDayOfMonthDate的值是= 30-4-2011但是删除是1-5-2011,即我想要任何指定日期的第一个月份日期.但它给了我上个月的最后日期.

提前致谢.

iphone objective-c nsdate nscalendar

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

序列化C++对象以通过套接字发送到Python - 最好的方法?

我需要创建两个不同的框架,一个写之间的网络通信C++和其他在Python.

为了交换数据​​,我想创建一些灵活的结构(基本上是一个struct)C++,它被序列化,通过套接字发送到Python然后反序列化.

最常见的方法是什么?我确信Boost可以在任何一方做到这一点,因为有boost python,但我不想那么夸大项目要求.那么除了指定自己的二进制数据格式之外,是否可能有更小的库或其他优雅的解决方案?

更新:

所以这里有一个例子,说明如何使用Googles protobufC++脚本中的数据结构发送到Python脚本UDP.这是在Mac OS X Mavericks上测试的,但在其他Unix系统上也可以正常工作.

安装protobuf

第一步当然是安装protobuf库.我使用自制软件作为主库并pip安装Python模块:

brew install protobuf
pip install protobuf
Run Code Online (Sandbox Code Playgroud)

然后我使用proto语法定义了一个非常简单的数据结构:

文件名:foo.proto

package prototest;

message Foo {
  required int32 id = 1;
  required string bar = 2;
  optional string baz = 3;
}
Run Code Online (Sandbox Code Playgroud)

现在可以通过以下方式将此原始文件转换为C++和Python类:

protoc foo.proto --cpp_out=. --python_out=.
Run Code Online (Sandbox Code Playgroud)

该文件夹现在应该包含C++头文件和源文件以及Python代码:

??? foo.pb.cc
??? foo.pb.h
??? foo.proto …
Run Code Online (Sandbox Code Playgroud)

c++ python serialization protocol-buffers deserialization

5
推荐指数
2
解决办法
3766
查看次数

Pip安装忽略MANIFEST.in中的文件 - 如何正确构建项目?

我读了很多关于这个问题的但是找不到任何解决方案,所以我会问另一个关于它的问题,因为我甚至不确定我是否使用了正确的Python包文件夹结构.

所以基本上我正在开发一个使用Tornado Web服务器框架的应用程序,我想打包它,因此用户可以通过它安装它pip并访问基本脚本来启动Web服务器.

目录结构如下:

??? MANIFEST.in
??? README.md
??? config
?   ??? default.cfg
??? docs
?   ??? Makefile
?   ??? _build
?   ??? _static
?   ??? _templates
?   ??? conf.py
?   ??? index.rst
??? foopackage
?   ??? __init__.py
?   ??? barmodule.py
?   ??? bazmodule.py
??? setup.py
??? static
?   ??? css
?   ?   ??? menu.css
?   ?   ??? main.css
?   ??? img
?   ?   ??? logo.png
?   ??? js
?   ?   ??? ui.js
?   ?   ??? navigation.js
? …
Run Code Online (Sandbox Code Playgroud)

python pip package

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

all()为同一个表达式返回不同的值

当我使用该函数时,我在python脚本中遇到了一个非常奇怪的问题all().

控制台给了我false(这显然是正确的)这一行:

all(x == 2 for x in (8,2,2,2))
Run Code Online (Sandbox Code Playgroud)

在我的脚本中同一行返回true?!

这里发生了什么?是否有其他all()功能可以在我的脚本中覆盖它?我正在导入以下模块:

import os
import sys
import string
import time
from time import gmtime, strftime
from optparse import OptionParser, OptionGroup
import cx_Oracle
from pylab import *
import ROOT
from array import array
import logging
from traceback import format_exc
Run Code Online (Sandbox Code Playgroud)

python

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

构造一个对象,每次访问它时都会改变其状态,并且行为类似于变量

我想构造一个具有特殊行为的对象,我很确定它可以用python完成(使用生成器,或者某种棘手的类定义).

我基本上想要一个对象让我们调用它 - colourgun每次访问它时都会从预定义颜色列表中返回颜色.所以它应该像一个简单的变量,但每次访问它时都要改变它的行为.

您可以在以下示例中看到类似的概念:

class CounterList(list):
    def __init__(self, *args):
        super(CounterList, self).__init__(*args)
        self.counter = 0
    def __getitem__(self, index):
        self.counter += 1
        return super(CounterList, self).__getitem__(index)
Run Code Online (Sandbox Code Playgroud)

每次访问列表时都会CounterList增加一个实例counter,因为它__getitem__被调用.

colourgun应该能够检测到它何时被"使用"并且表现得像这样:

>>> gun = Colourgun() # or a function, a generator, whatever...
>>> print gun
'predefined_colour1'
>>> print gun
'predefined_colour2'
>>> print gun
'predefined_colour3'
>>> print gun # no more colours left: reloading and maybe warn the user
[WARNING] automatically reloading the gun
'predefined_colour1'
>>> gun.load(['colour1', …
Run Code Online (Sandbox Code Playgroud)

python properties

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

从一个Jenkinsfile运行多个Docker容器

因此,我花了一整天的时间来弄清楚如何用多个Docker映像配置一个简单的Jenkins Pipeline,我一点都不高兴。

我需要在几个不同的Docker容器上执行(准备,构建,测试,文档)几个阶段(当前,我只选择了三个标准的Python容器)。如果这些程序可以并行运行会很好,但是我只找到了这个解决方案,它将所有阶段组合到一个阶段(因此在Blue Ocean UI中创建了一个不太有用的概述):跨多个Docker映像的Jenkins管道

因此,我结束了下面的配置,这很丑陋(到处都是代码重复),但是或多或少在经典UI中创建了一个漂亮的概览:

经典UI阶段

蓝海用户界面中的信息不多

蓝海舞台概述

来自的可接受的测试概述junit,它结合了每个阶段的所有测试,但是如果任何测试失败,则会显示相应的“版本”:

unit

但是,最令人讨厌的是,您看不到哪个步骤失败了。如果Python 2.7失败,其他所有内容也都标记为失败,甚至看不到哪个阶段失败。

我尝试了许多不同的方法,但我想知道应该怎么做。这对詹金斯来说应该是一件很平常的事,所以我想我在这个(对我来说绝对是全新的)管道/节点/标签/阶段/步骤/声明式/脚本化/ groovy / blueocean方面有一些普遍的误解...

应该可以为每个Docker容器定义一些列表(可能是可定制的阶段/步骤),并并行运行它们,并使其在Blue Ocean和Classic UI中很好地显示,不是吗?

node {
    stage("Python 2.7.14") {
        checkout scm
        docker.image('python:2.7.14').inside {  // just a dummy for now
            stage("Prepare") { sh 'python --version' }
            stage("Build") { sh 'ls -al' }
        }
    }
    stage("Python 3.5.4") {
        checkout scm
        docker.image('python:3.5.4').inside {
            stage("Prepare") { sh 'python -m venv venv' }
            stage("Build") {
                sh """
                    . venv/bin/activate
                    make install-dev
                """
            }
            stage('Test') {
                sh """
                    . venv/bin/activate …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins docker jenkins-pipeline

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

Jenkinsfile 和 Dockerfile 位于特定文件夹中

这让我抓狂:我尝试使用脚本化 Jenkins Pipeline 从存储库的特定文件夹中的 Dockerfile 构建 Docker 映像,但它没有获得正确的路径。

这是以下行Jenkinsfile

def customImage = docker.build("km3pipe:${env.BUILD_ID}",
                               "-f ${dockerfile} ${DOCKER_FILES_DIR}")
Run Code Online (Sandbox Code Playgroud)

正如您在下面的 Jenkinslog 中看到的,变量已正确解析(我还仔细检查了工作区,一切都很好),但它似乎忽略了第二个参数.dockerfiles

[py365] + docker build -t km3pipe:13 -f py365 ./dockerfiles
[py365] unable to prepare context: unable to evaluate symlinks in Dockerfile path: 
        lstat /var/lib/jenkins/workspace/f-docker-image-names-for-ci-2DCL5RJ7AMH7K
        IB6OCBTD57EC5DUGYZTQE5EQ6KGOSPXMUOVJP6Q/py365: no such file or directory
Run Code Online (Sandbox Code Playgroud)

根据文档(https://jenkins.io/doc/book/pipeline/docker/),这应该有效:

可以通过将其他参数添加到方法的第二个参数来将其他参数传递给 docker build build()。以这种方式传递参数时,该字符串中的最后一个值必须是 docker 文件的路径。

Dockerfile此示例通过传递 -f 标志来覆盖默认值:

node {
    checkout scm
    def dockerfile = 'Dockerfile.test'
    def customImage = docker.build("my-image:${env.BUILD_ID}", "-f ${dockerfile} …
Run Code Online (Sandbox Code Playgroud)

jenkins docker dockerfile jenkins-pipeline

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

用父/子压平树并返回所有节点

可能已经太晚了,但在解决之前我无法入睡:

我有一棵树,有一些父母,他们有孩子,他们也有孩子等等。

现在我需要一个函数来获取树中的所有节点。

这是目前有效的方法,但只有一层深度:

def nodes_from_tree(tree, parent):
    r = []
    if len(tree.get_children(parent)) == 0:
        return parent
    for child in tree.get_children(parent):
        r.append(nodes_from_tree(tree, child))
    return r
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过r,所以它记住了孩子们,但我多次使用该函数并r累积存储所有节点,尽管我将其设置为r=[]

def nodes_from_tree(tree, parent, r=[]):
    r = []
    if len(tree.get_children(parent)) == 0:
        return parent
    for child in tree.get_children(parent):
        r.append(nodes_from_tree(tree, child, r))
    return r
Run Code Online (Sandbox Code Playgroud)

编辑:这是树结构:

parent1    parent2    parent3
   |          |          |
   |          |          |
 child        |          |
              |          |
      +--------------+   |
      |       |      |   |
    child   child  child |
      | …
Run Code Online (Sandbox Code Playgroud)

python tree recursion

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

通过numpy从另一个列表中的向量中减去列表中的每个向量

我确信这个很容易numpy,但我找不到合适的方法.基本上我需要像outer()减法一样的东西.这是我通过LC的工作代码:

import numpy as np

a = np.array(((1,2,3), (2,3,4), (3,4,5)))
b = np.array(((6,7,8), (6,3,1)))

print np.array([i-j for i in a for j in b])
Run Code Online (Sandbox Code Playgroud)

输出:

[[-5 -5 -5]
 [-5 -1  2]
 [-4 -4 -4]
 [-4  0  3]
 [-3 -3 -3]
 [-3  1  4]]
Run Code Online (Sandbox Code Playgroud)

这是发布的答案的速度比较.a有1000000个条目,b有100个:

In [22]: %timeit np.array([i-j for i in a for j in b])
1 loops, best of 3: 12.3 s per loop

In [23]: %timeit np.repeat(a,b.shape[0],0)-np.tile(b,(a.shape[0],1))
10 loops, best …
Run Code Online (Sandbox Code Playgroud)

arrays numpy

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