我有一个wxPython应用程序(http://www.OpenSTV.org),它使用具有多轮的方法来计算选票.我想做两件事:
(1)对于大量的选票,这可能有点慢,所以我想向用户显示进度对话框,这样他就不会认为应用程序被冻结了.
(2)我想允许用户手动断开连接,这需要计数代码显示一个对话窗口.
为了实现(1),我创建了一个运行计数代码的线程,这使我可以向用户提供一个很好的进度对话框.
然而,问题在于计数代码不是主线程,只有wxPython中的主线程可以处理窗口事件.
我想我可以创建一个线程来代替运行进度对话框,但这看起来很尴尬.是否有更好的方法来完成(1)和(2)?
我有一个Python/wxPython程序,其中GUI是主线程,我使用另一个线程从文件加载数据.有时文件很大且加载速度慢,所以我使用wxPulse对话框来指示进度.
当我加载文件时,我计算在计数线程中读取的行数,并在主线程的wxPulse对话框中显示此计数.我通过读取加载线程正在写入的相同变量来获取主线程中的计数.
这是"线程安全"吗?这会以某种方式导致问题吗?我已经做了一段时间了,到目前为止一切都很好.
PS.我知道我可以使用队列来传输计数,但是我很懒,如果不需要,我也不想.
我正在使用GAE构建我的第一个应用程序,以允许用户进行选举,并为每次选举创建一个选举实体.
为了避免存储太多数据,我想在一段时间后自动删除选举实体 - 比如选举结束后三个月.是否可以在GAE中自动执行此操作?或者我需要手动执行此操作吗?
如果重要,我正在使用Python界面.
我对使用dust.js感兴趣,并且出于效率原因我想要预编译模板.
为了自动化编译过程,我希望能够从命令行执行此操作.从网站上看,我似乎必须使用浏览器来编译模板.有命令行解决方案吗?
我正在开发一个应用程序,它使用 Google API 进行地图,但我遇到的问题是获取正确的本地时间。我不能使用 JS,因为用户可以旅行到不同的位置并且可能不会更改时间设置。此外,服务器似乎有些关闭,我无法控制其 UNIX 时间。但是,无论何时您用谷歌搜索当地时间,都会根据您所在的位置进行搜索。由于我的应用程序也在使用位置信息,我不应该也可以访问该时间吗?
我看到SyntaxNet与Parsey McParseface一起发布,然后在Google Cloud Natural Language API出来后不久,它有一些类似的功能,但我在Cloud Natural Language API文档中没有看到任何提及SyntaxNet的内容.
SyntaxNet和Google-Cloud-NL都进行语法分析.有区别吗?我可以使用Cloud-NL而不必设置自己的tensor-flow和SyntaxNet吗?
与GAE进行交易时,可以传递实体,或者如果传递总是将密钥传递给实体.例如,假设我将资金从一个实体转移到另一个实体.我应该这样做:
@ndb.transactional(xg=True)
def transfer_money(key1, key2, amount):
entity1 = key1.get()
entity2 = key2.get()
entity1.money -= amount
entity2.money += amount
ndb.put_multi([entity1, entity2])
Run Code Online (Sandbox Code Playgroud)
或者这样可以:
@ndb.transactional(xg=True)
def transfer_money(entity1, entity2, amount):
entity1.money -= amount
entity2.money += amount
ndb.put_multi([entity1, entity2])
Run Code Online (Sandbox Code Playgroud)
还是取决于其他因素?
python google-app-engine transactions app-engine-ndb google-cloud-datastore
所有gcloud命令突然出现这个错误:
错误:gcloud 无法加载:没有名为 google.appengine.ext 的模块
这通常表示您的 gcloud 安装损坏或 Python 解释器存在问题。
请确认以下是 Python 2.7 可执行文件的路径:/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
如果不是,请将 CLOUDSDK_PYTHON 环境变量设置为指向可运行的 Python 2.7 可执行文件。
如果您仍然遇到问题,请按照此处的说明重新安装 Cloud SDK:https : //cloud.google.com/sdk/
以下是我尝试过的一些相关细节和事情:
还有其他人遇到此问题或可以建议修复吗?
我在下面有一个修复程序,但我很乐意将答案授予任何可以解释发生了什么的人。
我多年来一直在使用 GAE/P 1st gen 并且正在跳到我的第一个 GAE/P 2nd gen 项目。
我正在尝试像dev_appserver.py在第一代应用程序中那样在本地运行它,但是文档在这方面非常混乱。
我可以单独运行 Flask ( python main.py) 但静态文件不起作用(因为 Flask 对 一无所知app.yaml)并且数据存储也不起作用。
GAE 文档说这dev_appserver.py应该适用于第二代(除了在 Windows 上,但我在 Mac 上)但是当我运行它时,我收到以下错误。
当我dev_appserver.py使用 Python 2 或 3运行时会发生这种情况。我还CLOUDSDK_PYTHON按照说明设置了我的 Python 2 二进制文件。
那么我到底如何才能以静态文件和数据存储工作的方式在本地运行我的 GAE/P 第二代项目?!?
$ python ~/google-cloud-sdk/bin/dev_appserver.py --application=myapp --support_datastore_emulator=False ./app.yaml
INFO 2019-02-12 00:39:21,885 devappserver2.py:278] Skipping SDK update check.
INFO 2019-02-12 00:39:23,128 api_server.py:275] Starting API server at: http://localhost:51187
INFO 2019-02-12 00:39:23,139 instance_factory.py:71] Detected Python 3.6.5
INFO …Run Code Online (Sandbox Code Playgroud) 我一直在使用 GAE 一段时间没有任何问题。唯一的变化是我添加了 Spacy 以及我训练的模型。
当我使用 dev_appserver 在本地运行时,该应用程序消耗大约 153 MB。部署后,出现内存超出错误。即使有F4_1G实例,我也超出了内存:
超过 1228 MB 的硬内存限制,总共为 0 个请求提供服务后为 1280 MB。考虑在 app.yaml 中设置更大的实例类。
如果我导入 Spacy 并且不加载我的模型(实例有大约 200MB),那么部署就可以工作,所以 Spacy 本身不是问题,但是当我用spacy.load()内存加载我的模型时,然后超出了限制。请注意,这发生在我什至使用我的 Spacy 模型之前,因此仅加载模型就会导致问题。
我的 Spacy 模型是一个标记器和解析器,在磁盘上占用 27 MB。我不明白为什么应用引擎上的内存要求会比我的 Mac 大得多。
看起来其他人已经能够在应用引擎上运行 Spacy。知道我可能做错了什么吗?
python ×4
dust.js ×1
events ×1
google-api ×1
javascript ×1
spacy ×1
templates ×1
transactions ×1
window ×1
wxpython ×1