我在模块中有一个ReconnectingClientFactory.我希望模块尽可能灵活.我只需要一个TCP连接.我使用工厂作为此连接的持久接口.在过去,工厂会通过无休止地重试连接来响应断开连接,从不通知顶级脚本(导入模块的脚本)存在连接问题.
以下是我所拥有的一个简短示例:
Factory(protocol.ReconnectingClientFactory):
def clientConnectionFailed(self, connector, reason):
...
def clientConnectionLost(self, connector, reason):
...
Run Code Online (Sandbox Code Playgroud)
我认为最好是在出现连接问题时通知顶级脚本(导入模块的脚本).这样,顶级脚本可以定义断开连接解析行为,而不是在模块中对其进行硬编码.但是,将连接问题传达给顶级脚本的最佳方法是什么?
我可以提出异常,但它会被捕获到哪里?我想反应堆会抓住它,但这有什么帮助呢?
没有回调或错误我可以触发通知顶部脚本的连接问题.
顶级脚本可以提供在发生连接问题时要调用的特定函数[作为参数].这是好的设计吗?
在Eclipse中,如果将光标放在变量上,它将在代码中的任何位置突出显示该变量.我想知道如何一次突出多个变量?
我正在使用 diff 工具比较两个文件夹。我尝试了几种不同的 diff 工具,但现在我使用 WinMerge。有许多文件显示为右侧或左侧独有,例如:
右边我们有:/bar/some_organized_characters.txt
左边我们有:/foo/some_similar_organized_characters.txt
文本文件可能略有不同,但大部分相似。我希望大多数合并/差异工具中都存在一个工具,它可以告诉您这些文件可能是“相同的”(意味着它们具有相同的基础),但文件已被移动、重命名和稍微修改。
我特别想做的是“供应商合并”。我们有一些定制软件,我们希望将最近正式版本中的更改与我们所做的更改合并。许多文件在最新的官方版本中已经移动,手动查找每个移动/重命名是很困难的。
我经常使用Python来为其他平台创建原型,这是各种各样的便笺.现在我想在数据库中使用与关系数据相关的一些想法.
在Python中表示数据库的最佳方法是什么?一组元组?使用像SQLite这样的模块?
我正在寻找Python中的简单解决方案.如果解决方案太"数据库",我也会在数据库本身进行原型设计.
更新:我实际上不会在数据库中使用Python(我甚至没有特定的数据库),我只想用代码来思考"如果我有X关系数据,我可以回答Y问题,以及解决Z问题?"
我需要根据一些权重分配一个值。例如,如果我的权重是 1 和 2,那么我希望权重为 2 的列的值是权重为 1 的列的两倍。
我有一些 Python 代码来演示我正在尝试做什么,以及问题:
def distribute(total, distribution):
distributed_total = []
for weight in distribution:
weight = float(weight)
p = weight/sum(distribution)
weighted_value = round(p*total)
distributed_total.append(weighted_value)
return distributed_total
for x in xrange(100):
d = distribute(x, (1,2,3))
if x != sum(d):
print x, sum(d), d
Run Code Online (Sandbox Code Playgroud)
上面的代码显示了许多情况,其中分配值会导致分配的总和与原始值不同。例如,分配权重为 (1,2,3) 的 3 结果为 (1,1,2),总共为 4。
修复此分布算法的最简单方法是什么?
更新:
我希望分布值是整数值。只要整数的总和为正确的值,并且它们“尽可能接近”正确的分布,那么整数的确切分布并不重要。
(正确分布是指非整数分布,我还没有完全定义“尽可能接近”的意思。也许有几个有效的输出,只要它们是原始值的总和。)
有没有可以区分层次结构的工具?
IE,考虑以下层次结构:
A has child B.
B has child C.
Run Code Online (Sandbox Code Playgroud)
与以下内容相比:
A has child B.
A has child C.
Run Code Online (Sandbox Code Playgroud)
我想要一个工具来显示 C 已从 B 的子级移动到 A 的子级。是否存在此类实用程序?如果没有特定的工具,我不反对自己编写,那么有哪些适用于这个问题的好算法呢?
当我使用IDLE运行脚本时,如果脚本遇到异常并且执行停止,那么我将留下一个交互式shell,我可以用它来调查异常时的应用程序状态.这真的很好,但我发现IDLE缺乏编辑器.有没有一种方法可以让我在不使用IDLE的情况下"放弃异常交互式shell"行为?
在cPython(默认的Python实现)中,线程切换的频率是多少?这不是关于使用多核的问题; 我知道GIL,并意识到只有一个线程会在时间运行.
我已经看到一些情况,我按顺序有两条日志消息,第一条日志消息将被发出,但第二条消息不会被发出几秒钟.这可能是因为Python决定在两个日志语句之间切换线程.这让我相信Python每隔几秒就会在线程之间切换一次,这比我预期的要慢得多.它是否正确?
是否可以在不使用子查询的情况下在 SQLAlchemy 中执行联合?
例如,在链接的问题中,SQLAlchemy 生成以下形式的 SQL:
SELECT * FROM (SELECT column_a FROM table_a UNION SELECT column_b FROM table_b)
但我希望 SQLAlchemy 生成如下 SQL:
SELECT column_a FROM table_a UNION SELECT column_b FROM table_b
后一个 SQL 更短,不使用子查询,并且执行相同的操作。SQLAlchemy 可以像后一个查询一样生成联合吗?
我有几个类似的类,它们都将由相同的代码初始化,因此需要具有相同的"构造函数签名".(在动态Python中是否真的有构造函数和签名?我离题了.)
使用zope.interface定义类__init __参数的最佳方法是什么?
我将粘贴一些我用于试验zope.interface的代码以方便讨论:
from zope.interface import Interface, Attribute, implements, verify
class ITest(Interface):
required_attribute = Attribute(
"""A required attribute for classes implementing this interface.""")
def required_method():
"""A required method for classes implementing this interface."""
class Test(object):
implements(ITest)
required_attribute = None
def required_method():
pass
print verify.verifyObject(ITest, Test())
print verify.verifyClass(ITest, Test)
Run Code Online (Sandbox Code Playgroud)
我不能只在ITest中定义一个__ init __函数,因为它将由Python解释器专门处理 - 我想?无论如何,它似乎都不起作用.那么,使用zope.interface定义"类构造函数"的最佳方法是什么?
python ×6
diff ×2
ide ×2
algorithm ×1
eclipse ×1
java ×1
python-idle ×1
sqlalchemy ×1
twisted ×1
zope ×1