小编Los*_*oul的帖子

为什么我们在Python类中使用__init__?

我无法理解类的初始化.

它们有什么意义,我们如何知道它们包含哪些内容?在类中编写需要不同类型的思考而不是创建函数(我想我可以创建函数,然后将它们包装在一个类中,这样我就可以重用它们.这会起作用吗?)

这是一个例子:

class crawler:
  # Initialize the crawler with the name of database
  def __init__(self,dbname):
    self.con=sqlite.connect(dbname)

  def __del__(self):
    self.con.close()

  def dbcommit(self):
    self.con.commit()
Run Code Online (Sandbox Code Playgroud)

或者另一个代码示例:

class bicluster:
  def __init__(self,vec,left=None,right=None,distance=0.0,id=None):
    self.left=left
    self.right=right
    self.vec=vec
    self.id=id
    self.distance=distance
Run Code Online (Sandbox Code Playgroud)

__init__在尝试阅读其他人的代码时遇到了很多类,但我不了解创建它们的逻辑.

python class

113
推荐指数
5
解决办法
16万
查看次数

将变量传递给函数时如何使用python timeit?

我正在努力使用timeit并且想知道是否有人有任何提示

基本上我有一个函数(我传递一个值),我想测试速度并创建它:

if __name__=='__main__':
    from timeit import Timer
    t = Timer(superMegaIntenseFunction(10))
    print t.timeit(number=1)
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到了来自timeit模块的奇怪错误:

ValueError: stmt is neither a string nor callable
Run Code Online (Sandbox Code Playgroud)

如果我自己运行该功能,它可以正常工作.当我在模块中包装它时,我得到了错误(我尝试使用双引号而没有..sameoutput).

任何建议都会很棒!

谢谢!

python debugging benchmarking

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

在rabbitmq中池化连接或通道之间是否存在性能差异?

我是Rabbitmq(和编程)的新手,如果这很明显,请提前对不起.我正在创建一个池来共享正在处理队列的线程,但我不确定是否应该在池中使用连接或通道.

我知道我需要通道来完成实际工作,但每个连接有一个通道(从队列中获得更多吞吐量)是否有性能优势?或者我最好只使用每个应用程序的单个连接并汇集多个渠道?

注意:因为我正在汇集资源,初始成本不是一个因素,因为我知道连接比渠道更昂贵.我对吞吐量更感兴趣.

queue message-queue rabbitmq task-queue

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

如何处理数字猜谜游戏(带扭曲)算法?

我正在学习编程(Python和算法),并且正在尝试处理我感兴趣的项目.我已经创建了一些基本的Python脚本,但我不确定如何处理我正在尝试构建的游戏的解决方案.

以下是游戏的工作方式:

将为用户提供具有值的项目.例如,

Apple = 1
Pears = 2
Oranges  = 3
Run Code Online (Sandbox Code Playgroud)

然后他们将有机会选择他们喜欢的任何组合(即100个苹果,20个梨和一个橙色).计算机获得的唯一输出是总值(在此示例中,它当前为143美元).电脑会试着猜猜他们有什么.显然,第一回合无法正确使用.

         Value    quantity(day1)    value(day1)
Apple      1        100                100
Pears      2         20                 40
Orange     3          1                  3
Total               121                143
Run Code Online (Sandbox Code Playgroud)

下一轮用户可以修改他们的数量但不超过总数量的5%(或者我们可能选择的其他百分比.例如,我将使用5%).水果价格可以随意变化,因此总价值也可能因此而变化(为简单起见,本例中我没有改变水果价格).使用上面的例子,在游戏的第2天,用户在第3天返回$ 152和$ 164的值.这是一个例子:

Quantity (day2)   %change (day2)    Value (day2)   Quantity (day3)   %change (day3)   Value(day3)
 104                                 104            106                                106
  21                                  42             23                                 46
   2                                   6              4                                 12
 127               4.96%             152            133               4.72%            164
Run Code Online (Sandbox Code Playgroud)

*(我希望表格显示正确,我必须手动分隔它们,所以希望它不仅仅是在我的屏幕上进行,如果它不起作用,请告诉我,我会尝试上传截图.)

我试图看看我是否可以计算出一段时间内的数量(假设用户有耐心继续输入数字).我现在知道我唯一的限制是总价值不能超过5%所以我现在不能达到5%的准确度,所以用户将永远进入它.

到目前为止我做了什么

到目前为止,这是我的解决方案(不多).基本上,我采取所有的价值观并找出他们所有可能的组合(我完成了这一部分).然后我拿出所有可能的组合并将它们作为字典放入数据库中(例如,对于143美元,可能有一个字典条目{apple:143,Pears:0,Oranges:0} ..一直到{apple :0,Pears:1,Oranges:47}.每次我得到一个新号码时都这样做,所以我列出了所有可能性.

这就是我被困的地方.在使用上述规则时,我如何找出最佳解决方案?我想我需要一个健身功能,可以自动比较两天的数据,并消除前几天数据差异超过5%的任何可能性.

问题:

所以我的问题是用户改变总数而我有一个所有概率的列表,我该如何处理?我需要学习什么?是否有任何算法或我可以使用的理论适用?或者,为了帮助我理解我的错误,你能否建议我可以添加哪些规则以使这个目标可行(如果它不在当前状态.我正在考虑添加更多水果并说他们必须选择至少3个等等.) ?另外,我对遗传算法只有模糊的理解,但我认为我可以在这里使用它们,如果有什么我可以使用的吗?

我非常非常渴望学习,所以任何建议或提示将不胜感激(只是请不要告诉我这个游戏是不可能的).

更新:获得这很难解决的反馈.所以我认为我会在游戏中添加另一个条件,它不会干扰玩家正在做的事情(游戏对他们保持不变),但每天水果的价值会随机变化(随机).这会让它更容易解决吗?因为在5%的运动和某些果实值变化中,随着时间的推移可能只有少数组合.

第1天,任何事都有可能并且获得足够接近的范围几乎是不可能的,但随着水果价格的变化而用户只能选择5%的变化,那么不应该(随着时间的推移)范围变窄和变窄.在上面的例子中,如果价格足够波动,我想我可以强行推出一个解决方案给我一个范围来猜测,但我想弄清楚是否有一个更优雅的解决方案或其他解决方案来保持缩小这个范围时间.

更新2:在阅读并询问后,我相信这是一个隐藏的马尔可夫/维特比问题,它跟踪水果价格的变化以及总和(加权最后的数据点最重).我不知道如何应用这种关系.我认为情况确实如此,但至少我开始怀疑这是某种类型的机器学习问题.

更新3:我创建了一个测试用例(数字较小)和一个生成器来帮助自动生成用户生成的数据,我试图从中创建一个图表来查看更有可能的数据.

这是代码,以及用户实际结果数量的总值和注释.

#!/usr/bin/env …
Run Code Online (Sandbox Code Playgroud)

python java algorithm machine-learning data-mining

52
推荐指数
3
解决办法
3399
查看次数

Pythonic方式检查是否存在某些东西?

这是非常基本的,但我编码并开始想知道是否有一种pythonic方法来检查是否存在某些东西.这是我如何做到的,如果它是真的:

var = 1
if var:
    print 'it exists'
Run Code Online (Sandbox Code Playgroud)

但是当我检查是否存在某些东西时,我经常这样做:

var = 2
if var:
    print 'it exists'
else:
    print 'nope it does not'
Run Code Online (Sandbox Code Playgroud)

如果我所关心的只是一种浪费,似乎是一种浪费,如果没有其他东西,有没有办法检查是否存在某些东西?

python if-statement

49
推荐指数
5
解决办法
21万
查看次数

如何使用Python将NULL数据插入MySQL数据库?

将一些数据从Python脚本插入MySQL时,我遇到了一个奇怪的错误.它基本上与我插入的变量空白有关.我认为MySQL不喜欢空白变量但是还有其他东西我可以改变它以便它适用于我的insert语句吗?

IF如果它的空白,我可以成功地使用一个语句将其变为0,但这可能会破坏我计划稍后在MySQL中执行的一些数据分析.有没有办法将它转换为NULLMySQL接受它但不添加任何东西?

python mysql

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

如何在python中删除特定的警告消息,同时保持所有其他警告正常?

我在python脚本中隐藏了一些简单的数学,并得到以下警告:

"警告:划分为零除以".

为了提供一些背景,我拿着两个值,并试图找到价值的百分比差值(a - b) / a,如果它超过一定的范围内,那么对其进行处理,但有时值ab为零.

我想摆脱这个特定的警告(在一个特定的行),但到目前为止我找到的所有信息似乎告诉我如何停止所有警告(我不想要).

当我以前编写shell脚本时,我可以做这样的事情

code...
more code 2 > error.txt
even more code  
Run Code Online (Sandbox Code Playgroud)

在那个例子中,我会得到'代码'和'甚至更多代码'命令的警告,但不是第二行.

这可能吗?

python

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

如何从另一个文件调用函数?

对不起基本问题我很确定,但我似乎无法解决这个问题.

假设我有这个程序,该文件被调用pythonFunction.py:

def function():
   return 'hello world'

if __name__=='__main__':
   print function()
Run Code Online (Sandbox Code Playgroud)

我怎么能在另一个程序中调用它?我试过了:

import pythonFunction as pythonFunction
print pythonFunction.function
Run Code Online (Sandbox Code Playgroud)

而不是'hello world',我得到了...我过去通过将第一个文件作为类来完成这个,但我想知道如何正确导入函数?如果它有帮助,在我的真实文件中,我正在打印字典

python

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

如何通过Python访问Amazon DynamoDB?

我目前正在使用hbase和我的Python应用程序,并想尝试使用Amazon DynamoDB.有没有办法使用Python来读取,写入和查询数据?

python database amazon-web-services nosql amazon-dynamodb

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

返回声明后有没有办法做更多的工作?

如果我能在返回结果后在函数中做更多的工作,我有点好奇.基本上我在使用金字塔框架(简单地在python中编码)创建一个网站后我处理输入我返回变量来呈现页面但有时我想在渲染页面后做更多的工作.

例如,您来到我的网站并更新您的个人资料,所有您关心的是它的成功,所以我输出一条消息说"成功!" 但在完成之后我想接受你的更新并更新你的活动日志,更新你的朋友活动流等等.现在我正在做所有这些,然后我返回你关心的结果状态,但我'我很好奇,如果我能做到这一点,那么用户可以更快地得到他们的回复.

我之前已经完成了多处理,最糟糕的情况是我可能只是分叉一个线程来完成这项工作,但是如果有一种方法在return语句之后继续工作那么那会更简单.

例:

def profile_update(inputs):
  #take updates and update the database 
  return "it worked"
  #do maintainence processing now..
Run Code Online (Sandbox Code Playgroud)

python

30
推荐指数
5
解决办法
3万
查看次数