我遇到了多处理模块的麻烦。 我正在使用地图方法的工作者池从许多文件加载数据,并为他们每个我用自定义函数分析数据。 每次处理一个文件,我都想更新一个计数器,以便能够跟踪还有多less文件需要处理。 这里是示例代码: def analyze_data( args ): # do something counter += 1 print counter if __name__ == '__main__': list_of_files = os.listdir(some_directory) global counter counter = 0 p = Pool() p.map(analyze_data, list_of_files) 我找不到解决scheme。
使用pip在virtualenv中安装软件包会导致将软件包安装在全局site-packages文件夹中,而不是在virtualenv文件夹中。 以下是我如何在OS X Mavericks(10.9.1)上设置Python3和virtualenv: 我使用Homebrew安装了python3: ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" brew install python3 –with-brewed-openssl 更改.bash_profile中的$PATHvariables; 添加了以下行: export PATH=/usr/local/bin:$PATH 运行which python3返回/usr/local/bin/python3 (在重新启动shell之后)。 注意: which python3仍然返回/ usr/bin/python 。 使用pip3安装virtualenv: pip3 install virtualenv 接下来,创build一个新的virtualenv并激活它: virtualenv testpy3 -p python3 cd testpy3 source bin/activate 注意:如果我没有指定-p python3,则virtualenv中的bin文件夹中将缺lesspip。 运行which pip和which pip3都返回virtualenv文件夹: /Users/kristof/VirtualEnvs/testpy3/bin/pip3 现在,当我尝试在激活的virtualenv中使用pip安装例如Markdown时,pip将安装在全局site-packages文件夹中,而不是virtualenv的site-packages文件夹中。 pip install markdown 运行pip list返回: Markdown (2.3.1) pip (1.4.1) […]
我有困难缠着这个。 现在我有一些看起来像这样的模型: def Review(models.Model) …fields… overall_score = models.FloatField(blank=True) def Score(models.Model) review = models.ForeignKey(Review) question = models.TextField() grade = models.IntegerField() 评论有几个“分数”,overall_score是分数的平均值。 保存评论或评分时,我需要重新计算overall_score平均值。 现在我正在使用重写的保存方法。 使用Django的信号分配器会有什么好处吗?
我试图运行一个脚本启动,除其他外,一个Python脚本。 我得到一个ImportError:No module named …,但是,如果我通过解释器启动ipython并以相同的方式导入相同的模块,模块将被接受。 怎么回事,我该如何解决? 我试图了解Python如何使用PYTHONPATH,但我彻底困惑。 任何帮助将不胜感激。
Python似乎有复制文件(例如shutil.copy )和复制目录(例如shutil.copytree )function的function,但我还没有find任何处理两者的function。 当然,检查你是否想复制一个文件或一个目录是微不足道的,但是这似乎是一个奇怪的遗漏。 是否真的没有标准function,像UNIX命令,即支持目录和文件和recursion复制的副本? 在Python中解决这个问题的最优雅的方法是什么?
我有一个像20000名单组成的名单。 我使用每个列表的第三个元素作为标志。 只要至less有一个元素的标志是0,我想在这个列表上做一些操作,就像: my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], …..] 在开始时,所有的标志都是0.我使用while循环来检查是否至less有一个元素的标志是0: def check(lista): for item in lista: if item[2] == 0: return True return False 如果check(my_list)返回True ,那么我继续在我的列表上工作: while check(my_list): for item in my_list: if condition: item[2] = 1 else: do_sth() 实际上,我想在my_list中移除元素,但我不能在迭代它的时候删除项目。 原始的my_list没有标志: my_list = [["a", "b"], ["c", "d"], ["e", "f"], […]
我每天都收到一份文件(更新)。 我想要做的是插入每个不存在的项目。 我也想跟踪我第一次插入他们,以及我最后一次看到他们的更新。 我不想有重复的文件。 我不想删除以前保存的文档,但不在我的更新中。 95%(估计)的logging是每天不变的。 我正在使用Python驱动程序(pymongo)。 我现在做的是(伪代码): for each document in update: existing_document = collection.find_one(document) if not existing_document: document['insertion_date'] = now else: document = existing_document document['last_update_date'] = now my_collection.save(document) 我的问题是速度很慢(不到10万条logging需要40分钟,而且我有数百万条logging)。 我很确定这样做有内置的东西,但更新()的文件是mmmhhh ….有点简洁….( http://www.mongodb.org/display/DOCS/Updating ) 有人可以build议如何更快地做到这一点?
你会怎么说不等于? 喜欢 if hi == hi: print "hi" elif hi (does not equal) bye: print "no hi" 是否有替代==这意味着“不等于”?
我有一个称为dists的距离数组。 我想select两个值之间的dists。 我写了下面这行代码来做到这一点: dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))] 但是,这只能select条件 (np.where(dists <= r + dr)) 如果我通过使用一个临时variables顺序执行命令,它工作正常。 为什么上面的代码不起作用,我如何才能使它工作? 干杯
我发现这种模式(或反模式),我很高兴。 我觉得这很敏捷: def example(): age = … name = … print "hello %(name)s you are %(age)s years old" % locals() 有时我用它的表弟: def example2(obj): print "The file at %(path)s has %(length)s bytes" % obj.__dict__ 我不需要创build一个人工元组和计数参数,并保持元组内的%s匹配位置。 你喜欢它吗? 你/你会用它吗? 是/否,请解释。