小编Ηλί*_*ίας的帖子

多处理炸弹

我正在使用Doug Hellmann关于多处理的教程中的以下示例:

import multiprocessing

def worker():
    """worker function"""
    print 'Worker'
    return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker)
        jobs.append(p)
        p.start()
Run Code Online (Sandbox Code Playgroud)

当我试图在if语句之外运行它时:

import multiprocessing

def worker():
    """worker function"""
    print 'Worker'
    return

jobs = []
for i in range(5):
    p = multiprocessing.Process(target=worker)
    jobs.append(p)
    p.start()
Run Code Online (Sandbox Code Playgroud)

它开始不间断地产生进程,并且阻止它的唯一方法是重启!

为什么会这样?为什么它没有生成5个进程并退出?为什么我需要if语句?

python multiprocessing

36
推荐指数
2
解决办法
4917
查看次数

覆盖__add__方法后出现TypeError

我试图了解它是如何__add__工作的:

class MyNum:
    def __init__(self,num):
        self.num=num
    def __add__(self,other):
        return MyNum(self.num+other.num)
    def __str__(self):
        return str(self.num)
Run Code Online (Sandbox Code Playgroud)

如果我把它们放在一个清单中

d=[MyNum(i) for i in range(10)]
Run Code Online (Sandbox Code Playgroud)

这很有效

t=MyNum(0)
for n in d:
    t=t+n
print t
Run Code Online (Sandbox Code Playgroud)

但这不是:

print sum(d)
TypeError: unsupported operand type(s) for +: 'int' and 'instance'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怎样才能得到sum()

UPDATE

我的问题是如何在支持的对象列表上使用总和__add__,需要尽可能保持通用.

python

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

在以+或 - 开头的字段上绕过excel csv公式转换

我有一个内容的csv文件:

"x","y","-z"
Run Code Online (Sandbox Code Playgroud)

当我导入它时,我得到:

替代文字

我该如何绕过这种转换?

更新

如果你试试:

   "x","y",="-z,a"
Run Code Online (Sandbox Code Playgroud)

",a"未导入.

如果你在前面放一个空格:

   "x","y",=" -z"
Run Code Online (Sandbox Code Playgroud)

要么

   "x","y"," -z"
Run Code Online (Sandbox Code Playgroud)

它会工作正常

csv excel

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

numpy数组上项的坐标

我有一个numpy数组:

[[  0.   1.   2.   3.   4.]
 [  7.   8.   9.  10.   4.]
 [ 14.  15.  16.  17.   4.]
 [  1.  20.  21.  22.  23.]
 [ 27.  28.   1.  20.  29.]]
Run Code Online (Sandbox Code Playgroud)

我想快速找到特定值的坐标并避免数组上的python循环.例如,数字4已打开:

row 0 and col 4
row 1 and col 4
row 2 and col 4
Run Code Online (Sandbox Code Playgroud)

并且搜索函数应该返回一个元组:

((0,4),(1,4),(2,4))
Run Code Online (Sandbox Code Playgroud)

这可以通过nunmpy的功能直接完成吗?

python numpy

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

在Python中处理UTF-8数字

假设我正在读取包含3个逗号分隔数字的文件.该文件使用未知编码保存,到目前为止我正在处理ANSI和UTF-8.如果文件是UTF-8并且它有1行,值为115,113,12,那么:

with open(file) as f:
    a,b,c=map(int,f.readline().split(','))
Run Code Online (Sandbox Code Playgroud)

会抛出这个:

invalid literal for int() with base 10: '\xef\xbb\xbf115'
Run Code Online (Sandbox Code Playgroud)

第一个数字总是被这些'\ xef\xbb\xbf'字符破坏.对于其余2个数字,转换工作正常.如果我用''手动替换'\ xef\xbb\xbf'然后进行int转换它将起作用.

对于任何类型的编码文件,有更好的方法吗?

python byte-order-mark utf-8 character-encoding

11
推荐指数
2
解决办法
9596
查看次数

在python项目中共享实用程序模块

在我的python项目中共享实用程序模块的最佳目录结构策略是什么?由于常用模块将使用新函数进行更新,我不希望将它们放在python安装目录中.

project1/
project2/
sharedUtils/
Run Code Online (Sandbox Code Playgroud)

从project1我不能使用"import ..\sharedUtils",还有其他方法吗?我宁愿不对"sharedUtils"位置进行硬编码

提前致谢

python directory-structure

10
推荐指数
3
解决办法
2528
查看次数

凝聚矩阵函数找到对

对于一组观察:

[a1,a2,a3,a4,a5]
Run Code Online (Sandbox Code Playgroud)

他们的成对距离

d=[[0,a12,a13,a14,a15]
   [a21,0,a23,a24,a25]
   [a31,a32,0,a34,a35]
   [a41,a42,a43,0,a45]
   [a51,a52,a53,a54,0]]
Run Code Online (Sandbox Code Playgroud)

以浓缩矩阵形式给出(上面的上三角形,由下式计算 scipy.spatial.distance.pdist):

c=[a12,a13,a14,a15,a23,a24,a25,a34,a35,a45]
Run Code Online (Sandbox Code Playgroud)

问题是,假设我在压缩矩阵中有索引,那么有一个函数(最好是在python中)f可以快速给出哪两个观察结果来计算它们?

f(c,0)=(1,2)
f(c,5)=(2,4)
f(c,9)=(4,5)
...
Run Code Online (Sandbox Code Playgroud)

我尝试了一些解决方案,但没有一个值得一提:(

python algorithm math statistics scipy

10
推荐指数
2
解决办法
2575
查看次数

识别欧氏距离最小的点

我有一个n维点的集合,我想找到哪两个是最接近的.我可以为2个维度做的最好的是:

from numpy import *
myArr = array( [[1, 2],
                [3, 4],
                [5, 6],
                [7, 8]] )

n = myArr.shape[0]
cross = [[sum( ( myArr[i] - myArr[j] ) ** 2 ), i, j]
         for i in xrange( n )
         for j in xrange( n )
         if i != j
         ]

print min( cross )
Run Code Online (Sandbox Code Playgroud)

这使

[8, 0, 1]
Run Code Online (Sandbox Code Playgroud)

但这对于大型阵列来说太慢了.我可以应用什么样的优化?

有关:


两个不同的Numpy阵列中的点之间的欧几里德距离,而不是在内

python algorithm numpy nearest-neighbor euclidean-distance

9
推荐指数
3
解决办法
7744
查看次数

将lambda函数的名称作为字符串

我如何获得lambda函数的名称?

使用__name__属性返回<lambda>:

def myfunc():
    pass
myfunc_l = lambda :None

print myfunc.__name__
print myfunc_l.__name__

>>myfunc
>><lambda>
Run Code Online (Sandbox Code Playgroud)

我在期待,myfunc_l但我得到了<lambda>

python lambda function

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

禁用类实例方法

如何根据条件快速禁用类实例中的所有方法?我天真的解决方案是覆盖使用__getattr__但是当函数名称已经存在时不会调用它.

class my():
    def method1(self):
        print 'method1'
    def method2(self):
        print 'method2'
    def __getattr__(self, name):
        print 'Fetching '+str(name)
        if self.isValid():
            return getattr(self, name)
    def isValid(self):
        return False
if __name__ == '__main__':
    m=my()
    m.method1()
Run Code Online (Sandbox Code Playgroud)

python

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

在pydev上设置coverage配置

我用pydev(2.0.0.2011040403)重新安装了Eclipse,但调试和运行菜单中缺少带有"coverage"的运行配置.我确定那个选项曾经存在,我怎样才能让它再次出现?

python eclipse code-coverage pydev

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

使用希腊文件名读取文件

我不是unicode专家,我读过类似的帖子,没有任何决定性的解决方案.我需要一个片段来读取一些带有希腊字符的文件.我的文件有像这样的名字

20.10.2011 ???????? ????????- ????????? 2011.xls

我有一个生成文件名的生成器函数:

# -*- coding:utf-8 -*-
import os
import glob

def filesInDir(directory, mask='*.*'):
    for root, dir, files in os.walk(directory):
        for file in glob.glob(os.path.join(root, mask)):            
            yield file
Run Code Online (Sandbox Code Playgroud)

打电话给:

for file in filesInDir(directory=r'.'):
    with open(file,'r') as f:
        print f
Run Code Online (Sandbox Code Playgroud)

IOError: [Errno 22] invalid mode ('r') or filename: '.\\20.10.2011 ?s?????? ?????\xb5??- ?????st?? 2011.xls'
Run Code Online (Sandbox Code Playgroud)

如何使用这些文件名创建有效的文件对象?

python unicode

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

matplotlib中的图形内的图形

我想将时间序列和直方图组合在一起,如下例所示: 组合图

我只是希望一个没有失真的缩放,并在第二个内部自由放置,但我还没有找到一个为此剪断的代码.

该图是从这里获得的,但它涉及合并2个svg图.这可以直接完成matplotlib吗?

python matplotlib

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