小编Odd*_*ing的帖子

对象池设计模式的Python实现

我需要一个对象池,而不是自己实现它,我想我会四处寻找一个现成的和经过测试的Python库.

我发现很多其他人在寻找,但没有得到很多直接的答案,所以我把它带到了Stack Overflow.

在我的例子中,我有大量的线程(使用threading模块),需要偶尔调用一个基于SOAP的远程服务器.他们每个人都可以建立自己与服务器的连接,但设置套接字并完成身份验证过程是很昂贵的(它受到服务器的限制),所以我想共享一个连接池,只在需要时创建更多连接.

如果要汇总的项目是工作子过程,我可能已经选择了multiprocessing.pool,但它们不是.如果它们是工作线程,我可能选择了这个实现,但它们不是.

如果它们是MySQL连接,我可能选择了pysqlpool,但它们不是.同样,SQLAlchemy Pool已经出局了.

如果有一个线程,使用可变数量的连接/对象,我会考虑这个实现,但我需要它是线程安全的.

我知道我可以很快再次实现它,但鉴于有很多人在寻找它,我认为Stack Overflow上的规范答案会很好.

python design-patterns data-structures

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

Python库无需转码即可修改MP3音频

在我开始一个小项目之前,我正在寻找关于mp3格式的一些一般性建议,以确保我没有疯狂追逐.

我对mp3格式内部的理解很少.理想情况下,我正在寻找一个可以抽象出这些细节的库.我更喜欢使用Python(但可以说服不然).

我想以一种相当简单的方式修改一组mp3文件.我对ID3标签不是很感兴趣,而是对音频本身感兴趣.我希望能够删除部分(例如,从第3分钟开始减少10秒),并插入部分(例如,将信用添加到结尾.)

我的理解是mp3格式是有损的,因此将其解码为(例如)PCM格式,进行修改,然后再将其编码为MP3将降低音频质量.(我很想听到我说错了.)

猜想如果我保持mp3格式,将会有某种最小帧或数据包大小来处理,因此操作的粒度可能更粗糙.只要我在几秒钟内获得准确度,我就可以忍受.

我看过PyMedia,但它需要我迁移到PCM来处理数据.同样,LAME希望帮助我编码,但不能访问数据.我见过其他几个只处理ID3标签的库.

任何人都可以推荐一个Python MP3库吗?另外,你能不能理解我的假设,那就是去PCM和背部是坏的和可以避免的?

python mp3 codec

17
推荐指数
2
解决办法
8797
查看次数

移动相应的py时自动删除pyc文件(Mercurial)

(我预见到这个问题可能发生在3个月前,并被告知要努力避免它.昨天,我被它咬了,很难,现在它花了我真钱,我很想解决它.)

如果我将我的一个Python源文件移动到另一个目录中,我需要记住告诉Mercurial它移动了(hg move).

当我使用Mercurial将新软件部署到我的服务器时,它会小心地删除旧的Python文件并在新目录中创建它.

但是,Mercurial并不知道同一目录中的pyc文件,并将其遗留下来.旧的pyc优先于同一目录中的其他模块使用新的python文件.

随之而来的不是欢闹.

当我移动python文件时,如何说服Mercurial自动删除旧的pyc文件?还有其他更好的做法吗?试图记住从所有Mercurial存储库中删除pyc文件是行不通的.

python mercurial

15
推荐指数
4
解决办法
7489
查看次数

如何处理 Python 3.8 中的 Kivy 安装错误?

我已经从 Kivy 在 Python 中安装了所有必要的代码,但是我需要的最后一个是python -m pip install kivy给我一个这样的错误:

ERROR: Dependency for context.pyx not resolved: config.pxi
ERROR: Dependency for compiler.pyx not resolved: config.pxi
ERROR: Dependency for context_instructions.pyx not resolved: config.pxi
ERROR: Dependency for fbo.pyx not resolved: config.pxi
ERROR: Dependency for gl_instructions.pyx not resolved: config.pxi
ERROR: Dependency for instructions.pyx not resolved: config.pxi
ERROR: Dependency for opengl.pyx not resolved: config.pxi
ERROR: Dependency for opengl_utils.pyx not resolved: config.pxi
ERROR: Dependency for shader.pyx not resolved: config.pxi
ERROR: Dependency for stencil_instructions.pyx not resolved: …
Run Code Online (Sandbox Code Playgroud)

python python-3.x kivy windows-10 python-3.8

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

在SQLAlchemy中使用ORM映射进行外部联接

我在SQLAlchemy 0.6.8中使用ORM Mapping.

我有三个表(A,B和C),它们之间没有外键.

我正在尝试连接表A和B,然后使用C离开外连接.我期待一个名为元组,字段A,B和C - C字段有时设置为None.)

只需选择两个表格,我就可以轻松完成第一次连接.

(session.query(A, B)
    .filter(A.some_field = B.some_other_field))
Run Code Online (Sandbox Code Playgroud)

这让我得到一个带有字段A和B的NamedTuple.

然后我添加外连接,使其成为:

(session.query(A, B)
    .filter(A.some_field==B.some_other_field))
    .outerjoin((C, A.some_field==C.some_different_field))
Run Code Online (Sandbox Code Playgroud)

结果仍然只有两个表.我无法访问C的其他字段(即使在它们存在的情况下).

执行左外连接的正确方法是什么,才能访问最右边的表的字段?

如果我可以避免它,我宁愿不回退到基本的SQL - 我正在努力学习利用ORM.

orm join sqlalchemy outer-join

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

为什么Python的string.printable包含不可打印的字符?

我在一个问题中有两个String.printable的谜团.

首先,在Python 2.6中:

>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
Run Code Online (Sandbox Code Playgroud)

看看字符串的结尾,你会发现'\ x0b\x0c'像拇指一样伸出来.他们为什么在那里?我使用的机器设置为澳大利亚设置,因此不应该有任何重音字符等.

接下来,尝试运行此代码:

for x in string.printable: print x,
print
for x in string.printable: print x
Run Code Online (Sandbox Code Playgroud)

第一行成功打印由空格分隔的所有字符.两个奇怪的字符结果为男性和女性符号.

第二行成功打印除了换行符之外的所有字符.男性符号打印; 女性符号被替换为缺少的字符(方框).

我确信Python并不是出于性别偏见,所以有什么区别呢?

python character-encoding

12
推荐指数
2
解决办法
9544
查看次数

从Python修改Microsoft Outlook联系人

我过去编写了一些Python工具来从Outlook联系人中提取数据.现在,我正在尝试修改我的Outlook联系人.我发现我的更改正在被Outlook注意到,但它们并没有坚持下去.我似乎在更新一些缓存,但不是真正的记录.

代码很简单.

import win32com.client
import pywintypes

o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("My Profile Name")
contacts = profile.Folders.Item("Contacts")
contact = contacts.Items[43] # Grab a random contact, for this example.
print "About to overwrite ",contact.FirstName, contact.LastName
contact.categories = 'Supplier' # Override the categories

# Edit: I don't always do these last steps.
ns = None 
o = None
Run Code Online (Sandbox Code Playgroud)

此时,我切换到Outlook,它打开到详细地址卡视图.

我查看联系人摘要(不打开它),类别不变(不刷新?).

我打开联系人,其类别有时会改变.(不确定何时,但感觉它与缓存有关.)如果它已经改变,它会在我关闭它时提示我保存更改这是奇怪的,因为我没有在Outlook UI中更改任何内容.

如果我退出并重新启动Outlook,则更改将会消失.

怀疑我没有调用SaveChanges,但我看不到哪个对象支持它.

所以我的问题是:

  • 我应该打电话给SaveChanges吗?如果是的话,它在哪里?
  • 我是否犯了其他一些愚蠢的错误,导致我的数据被丢弃?

python mapi winapi outlook

9
推荐指数
1
解决办法
4161
查看次数

配置Celery通过Unix套接字与Redis通信

我希望Celery能够在Redis上构建而不是默认的RabbitMQ.

芹菜文件解释:

配置很简单,只需配置Redis数据库的位置:

BROKER_URL = 'redis://localhost:6379/0'

URL的格式为:

redis://:password@hostname:port/db_number

方案之后的所有字段都是可选的,并且将使用数据库0在端口6379上默认为localhost.

但是,我有Redis设置不要监听端口,而是听取套接字.

有一个URI方案来支持这个吗?

ubuntu redis celery

9
推荐指数
1
解决办法
1786
查看次数

我安装了哪个Eclipse版本?

我刚从官方下载页面安装了最新的Eclipse .我为Java Developers选择了Eclipse IDE.现在,我想安装Pydev,请让我至少使用版本3.6.1.我立即转到Eclipse中的Help-> About,并且看不到任何类似于3.6.1的版本号.相反,我得到了这个:

Version: Helios Service Release 1
Build id: 20100917-0705
(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.
Visit http://eclipse.org/
Run Code Online (Sandbox Code Playgroud)

那么,我如何找出我正在运行的实际版本

eclipse pydev

8
推荐指数
1
解决办法
3603
查看次数

图像哈希非常相似的图像

我正在截取应用程序的屏幕截图,并试图检测之前是否已经看到过确切的图像.我希望将微不足道的变化视为不同的 - 例如,如果图像中有文本,并且拼写发生变化,则算作不匹配.

我已经成功地使用屏幕截图图像内容的MD5哈希来查找已知图像的数据库,并检测它是否以前被看到过.

现在,我已将其移植到另一台机器上,尽管我尝试完全匹配配置,但我的旧机器的图像却略有不同.当我说不同的时候,变化是微不足道的 - 如果我把旧的和新的图像炸掉然后在那之间轻弹,我就看不到任何一个区别!尽管如此,ImageMagick的compare命令可以看到一些不同的像素.

所以我的MD5哈希不再匹配了.我需要一个图像哈希,而不是一个简单的MD5 哈希.

做我的研究,我发现大多数图像哈希都试图相当慷慨 - 他们接受调整大小,变换和水印的图像,并带有相应的误报.我想要一个更严格的图像哈希 - 唯一允许的变化是颜色的微小变化.

任何人都可以推荐图像哈希库或算法吗?(不是像dupdetector那样的应用程序).

记住:我的要求与许多类似的问题有所不同,因为我不想要像缩小pHash这样的自由算法,我不想要像结构相似性ImageMagick的比较那样的比较工具.

我想要一个哈希,使非常相似的图像给出相同的哈希值.这甚至可能吗?

hash image image-processing

8
推荐指数
1
解决办法
3371
查看次数