小编djh*_*ese的帖子

Github:来自标记的Wiki页面标题而不是文件名/ Web客户端

在github中有没有办法让wiki的标题基于标记?我找到了另一个使用markdown的项目,其中Home.md wiki页面的标题来自该文件.作者也可以使用Web界面,并使页面标题与降价相同.那个项目在这里:

https://github.com/sitaramc/gitolite/wiki

当我尝试使用restructuredtext(Home.rest)使用='的下划线做同样的事情时,标题最终会被忽略,甚至不会在渲染页面中显示.使用降价时也会发生同样的事情.

markdown restructuredtext github gollum-wiki

11
推荐指数
1
解决办法
1849
查看次数

Cython与numpy性能扩展

我一直在玩Cython以准备其他工作.我尝试了一个简单的测试用例,并注意到我的代码执行更大问题大小的方式有些奇怪.我创建了一个简单的最小/最大函数,用于计算2D float32数组的最小值和最大值,并将其与运行进行比较numpy.min(a), numpy.max(a).对于10000个元素的数组,性能类似.对于1000000个元素的数组,cython表现得更糟.这是我的cython代码:

import numpy
cimport cython
cimport numpy

DTYPE = numpy.float32
ctypedef numpy.float32_t DTYPE_t

@cython.boundscheck(False)
@cython.wraparound(False)
def minmax_float32(numpy.ndarray[DTYPE_t, ndim=2] arr):
    cdef DTYPE_t min = arr[0, 0]
    cdef DTYPE_t max = arr[0, 0]
    cdef int row_max = arr.shape[0]
    cdef int col_max = arr.shape[1]
    cdef int x, y
    for y in range(row_max):
        for x in range(col_max):
            if arr[y, x] < min:
                min = arr[y, x]
            if arr[y, x] > max:
                max = arr[y, x]

    return min, max
Run Code Online (Sandbox Code Playgroud)

这是我在ipython中完成的简单时间:

a …
Run Code Online (Sandbox Code Playgroud)

python numpy cython

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

从源文件获取conda meta.yaml的包版本

我正在尝试重新组织我的python包版本控制,所以我只需要在一个地方更新版本,最好是python模块或文本文件.对于我需要我的版本的所有地方,似乎有一种方法从源加载它from mypkg import __version__或至少将其作为文本解析出文件.我似乎找不到使用我的conda meta.yaml文件的方法.有没有办法从meta.yaml文件中的外部源加载版本?

我知道有git环境变量,但我不想标记通过本地conda存储库测试的每个alpha/beta/rc提交.我可以使用!!python/objectpyyaml 加载python对象,但是conda不支持任意python执行.我没有看到任何其他jinja2功能的方法.我还可以编写一个脚本来更新多个版本号,但我真的希望只修改一个文件作为最终版本号.谢谢你的帮助.

python conda

7
推荐指数
2
解决办法
2426
查看次数

Python从多个进程记录

我有一个可能长期运行的程序,目前有4个进程,但可以配置为有更多.我已经使用python 研究了来自多个进程的日志记录,logging并且使用了此处讨论的SocketHandler方法.我没有任何问题只有一个记录器(没有套接字),但从我读到的,我被告知它最终会出乎意料地失败.据我所知,当你尝试同时写入同一个文件时会发生什么.我的代码基本上做了以下事情:

import logging
log = logging.getLogger(__name__)

def monitor(...):
    # Spawn child processes with os.fork()
    # os.wait() and act accordingly

def main():
    log_server_pid = os.fork()
    if log_server_pid == 0:
        # Create a LogRecordSocketServer (daemon)
        ...
        sys.exit(0)
    # Add SocketHandler to root logger
    ...
    monitor(<configuration stuff>)

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我需要log在每个之后创建一个新对象os.fork()吗?现有的全局log对象会发生什么?

通过按照我的方式做事,我是否能解决我想要避免的问题(多个打开的文件/套接字)?这会失败吗?它为什么会失败(我希望能够判断未来类似的实现是否会失败)?

此外,log=从多个进程登录到一个文件的"正常"(一种表达式)方法以何种方式失败?它是否引发IOError/OSError?或者它只是没有完全写入文件的数据?

如果有人可以提供答案或链接来帮助我,那就太好了.谢谢.

仅供参考:我正在Mac OS X Lion上进行测试,代码可能最终会在Windows机器上的CentOS 6 VM上运行(如果这很重要).无论我使用什么解决方案都不需要在Windows上工作,但应该在基于Unix的系统上工作.

更新:这个问题已经开始摆脱日志记录的特定行为,而且更多的是linux在forks期间使用文件描述符做什么.我拿出了我的一本大学教科书,似乎如果你从两个进程(不是在一个分支之前)以附加模式打开一个文件,只要你的写入不超过它们,它们都能够正确地写入文件实际的内核缓冲区(虽然可能需要使用行缓冲,但仍然不确定).这将创建2个文件表条目和一个v节点表条目.打开一个文件,然后分叉不应该工作,但似乎只要你没有像以前那样超过内核缓冲区(我在之前的程序中完成).

所以我想,如果你想独立于平台的多处理记录您使用的插座,并创建一个新的SocketHandler每个叉后是安全的Vinay以下建议(应该在任何地方工作).对我而言,由于我可以很好地控制运行我的软件的操作系统,我想我将使用一个log带有FileHandler的全局对象(默认情况下以附加模式打开,并在大多数操作系统上缓冲行).为文档 …

python sockets file-io multiprocessing

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

与interp和IDL插值相比,Scipy map_coordinates双线性插值

我在重写同事IDL代码为蟒蛇的过程和我想出一些差异,我很困惑.根据我发现的其他SO问题和邮件列表线程,如果你使用scipy.ndimage.interpolation.map_coordinates并指定order=1它应该进行双线性插值.当比较IDL代码(在GDL中运行)和python(map_coordinates)之间的结果时,我得到了不同的结果.然后我尝试使用mpl_toolkits.basemap.interp,我得到了与IDL代码相同的结果.下面是一个显示错误的简单示例.有人可以帮我弄清楚我做错了什么map_coordinatesorder=1不是双线性的?

from scipy.ndimage.interpolation import map_coordinates
from mpl_toolkits.basemap import interp
import numpy

in_data = numpy.array([[ 25.89125824,  25.88840675],[ 25.90930748,  25.90640068]], dtype=numpy.float32)

map_coordinates(in_data, [[0.0],[0.125]], order=1, mode='nearest')
# map_coordinates results in "25.89090157"
interp(in_data, numpy.array([0,1]), numpy.array([0,1]), numpy.array([0.0]), numpy.array([0.125]), order=1)
# interp results in "25.89351439", same as GDL's "25.8935" when printed
Run Code Online (Sandbox Code Playgroud)

我很好用interp,但我很好奇为什么map_coordinates没有返回相同的结果.我注意到map_coordinates文档没有提到双线性,它实际上是双线性的吗?我错过了什么?

python interpolation scipy idl-programming-language matplotlib-basemap

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

Sphinx Latex pdf 在小节页面上包含子目录树

我有一个 sphinx 文档项目,用于生成文档的HTML ( make html) 和 PDF ( ) 版本。make latexpdf我使用子目录来组织一些页面。我的目录结构是这样的:

source/
    index.rst
    page1.rst
    subsection1/
        index.rst
        subpage1.rst
Run Code Online (Sandbox Code Playgroud)

我在两个 index.rst 文件中都指定了一个目录树:

# index.rst
.. toctree::

    page1
    subsection1/index

# subsection1/index.rst
.. toctree::

    subpage1
Run Code Online (Sandbox Code Playgroud)

当我生成 HTML 时,该subsection1/index页面具有目录列表,其中包含指向相应页面的链接。当我生成乳胶 PDF 时,它会忽略子目录树并且不打印任何内容,但我希望它与 HTML 相同。

我对乳胶没有太多经验,而且我在网上找不到任何关于这方面的信息,所以我觉得我错过了一些明显的东西。我已经研究过.. contents::.. include::但当然这不会产生我想要的 HTML,我希望我不需要有大量的.. only::部件。

latex pdflatex python-sphinx toctree

5
推荐指数
0
解决办法
623
查看次数

Cython:使用融合类型在一个参数中传递多个numpy数组

我已经重写了从C到Cython的算法,所以我可以利用融合类型,并使从python调用更容易.该算法可以使多个数组与其他一些参数一起工作.数组被接受为指针指针(例如).我想我会通过提供多个数组作为numpy数组的元组来从python调用cython代码,但要做到这一点会使融合类型变得混乱.这是我现在如何工作的一个简单示例:

import numpy
cimport numpy

ctypedef fused test_dtype:
    numpy.float32_t
    numpy.float64_t

cdef int do_stuff(test_dtype **some_arrays):
    if test_dtype is numpy.float32_t:
        return 1
    elif test_dtype is numpy.float64_t:
        return 2
    else:
        return -1

def call_do_stuff(tuple some_arrays):
    cdef unsigned int num_items = len(some_arrays)
    cdef void **the_pointer = <void **>malloc(num_items * sizeof(void *))
    if not the_pointer:
        raise MemoryError("Could not allocate memory")
    cdef unsigned int i
    cdef numpy.ndarray[numpy.float32_t, ndim=2] tmp_arr32
    cdef numpy.ndarray[numpy.float64_t, ndim=2] tmp_arr64
    if some_arrays[0].dtype == numpy.float32:
        for i in range(num_items):
            tmp_arr32 = some_arrays[i]
            the_pointer[i] = …
Run Code Online (Sandbox Code Playgroud)

python numpy cython

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