到目前为止,我已经避免了测试多线程代码的噩梦,因为它看起来像是一个雷区太多了.我想问一下人们如何测试依赖线程成功执行的代码,或者人们如何测试那些只在两个线程以给定方式交互时出现的问题?
对于今天的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这个imho上是有用的.
我正在使用Beautiful Soup 3解析一些HTML,但它包含HTML实体,Beautiful Soup 3不会自动为我解码:
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<p>£682m</p>")
>>> text = soup.find("p").string
>>> print text
£682m
Run Code Online (Sandbox Code Playgroud)
我怎样才能解码HTML实体中text获得"£682m",而不是"£682m".
很久以前我写了一个我多线程的网络蜘蛛,以便同时发生并发请求.那是在我的Python青年时代,在我知道GIL及其为多线程代码创建的相关问题之前的几天(IE,大多数时候东西最终都被序列化了!)......
我想重做这段代码,使其更强大,性能更好.我基本上有两种方法可以做到这一点:我可以在2.6+中使用新的多处理模块,或者我可以选择某种类型的基于反应器/事件的模型.我宁愿做后者,因为它更简单,更不容易出错.
所以问题涉及哪种框架最适合我的需求.以下是我目前了解的选项列表:
我有什么遗漏吗?当然必须有一个适合简化的异步网络库的最佳点的库!
[编辑:非常感谢intgr指向此页面的指针.如果你滚动到底部,你会看到有一个非常好的项目列表,旨在以某种方式解决这个任务.事实上,自Twisted开始以来事情确实已经发生了变化:人们现在似乎更倾向于基于协同例程的解决方案而不是传统的反应堆/回调导向解决方案.这种方法的好处是更清晰,更直接的代码:我在过去肯定发现过,特别是在C++中使用boost.asio时,基于回调的代码可能会导致难以理解的设计并且相对模糊不清未经训练的眼睛.使用协同例程允许您编写至少看起来更加同步的代码.我想我现在的任务是找出我喜欢的这些库中的哪一个,并试一试!很高兴我现在问...]
[编辑:也许对任何跟随或偶然发现这个问题或者在任何意义上关心这个话题的人都感兴趣:我发现了一个非常好的关于这个工作的可用工具的当前状态的文章]
我正在为我们现有的代码库添加一个eclipse项目,我想知道是否有办法将某些目录排除在eclipse之外?原因是我们的存储库中有一个巨大的"第三方"目录,它不能出现在我们用来有效同步的配对编程插件的项目中.
有线索吗?
我正在使用sphinx和autodoc插件为我的Python模块生成API文档.虽然我可以看到如何很好地记录特定参数,但我找不到如何记录**kwargs参数的示例.
有没有人有一个明确的方法来记录这些?
我正在尝试编写一个简单的单元测试,它将验证在某种情况下,我的应用程序中的类将通过标准日志记录API记录错误.我无法弄清楚测试这种情况最干净的方法是什么.
我知道鼻子已经通过它的日志插件捕获日志记录输出,但这似乎是作为失败测试的报告和调试帮助.
我能看到的两种方法是:
如果我采用前一种方法,我想知道将模拟出日志模块之前将全局状态重置为最简洁的方法.
期待您的提示和技巧......
我正在使用Python 2.6下的PyInstaller,这只是部分支持,因为MS使用他们的清单nonense创建了混乱,现在影响Python,因为它现在是MSVC8编译的.
问题是清单嵌入支持依赖于pywin32扩展来构建这是一个痛苦,因为我在创建virtualenv时没有包含主机的site-packages文件夹(有点打败构建环境中的点)我找不到方法安装所需的扩展,以便PyInstaller可以访问它们.
有没有人找到解决这个问题的方法?
所以到现在为止我已经明白我们都应该实现我们的RESTful服务,提供表示,使客户能够遵循HATEOAS原则.虽然理论上这一切都很有道理,但我一直在网上搜索一些严格遵循这个想法的客户端代码的好例子.
我读的越多,我就越开始觉得这是一次学术讨论,因为没有人真正这样做!人们可以呻吟所有他们喜欢的WS-*堆栈的许多缺陷但至少很清楚如何编写客户端:你可以解析WSDL并生成代码.
现在我明白这对于一个好的RESTful服务来说不是必需的:你应该只需要知道所涉及的关系和表示,你应该能够动态地对这些做出反应.但即使如此,现在这个原则是不是应该被提炼出来并抽象成一些常见的库?提供有关您可能收到的表示和关系的信息,并获得可在您的应用程序中使用的更有用的更高级代码?
这些只是我的半生不熟的想法,但我只是担心如果我现在潜入并编写一个正确的RESTful API,实际上没有人能够使用它!或者至少使用它会在背后造成这样的痛苦,因为人们将不得不编写胶水代码来解释我提供的关系和表示.
任何人都可以从客户的角度阐明这一点吗?有人可以展示一个正确的动态/反应式RESTful客户端代码示例,这样我就可以了解我实际上正在为之写作的受众吗?(更好的是提供一些抽象的客户端API的一个例子)否则它的所有理论......
[编辑:请注意,我在这里发现了一个类似的问题,我认为这个问题没有得到回答,作者被一个维基百科的存根所取代!]
虽然我知道我可以使用一些巨大的正则表达式,例如发布在这里的那个,但我想知道是否有一些调整,如果使用标准模块或者某些第三方附加组件这么做的话?
简单的问题,但没有任何东西在Google(或Stackoverflow)上跳出来.
期待看到你们是怎么做到的!
python ×7
unit-testing ×2
asynchronous ×1
client ×1
eclipse ×1
hateoas ×1
html ×1
macos ×1
mocking ×1
networking ×1
nose ×1
project ×1
pyinstaller ×1
regex ×1
rest ×1
twisted ×1
url ×1
virtualenv ×1
web-services ×1
winapi ×1