asyncio.gather并且asyncio.wait似乎有类似的用途:我有一堆异步的东西,我想要执行/等待(不一定等待一个在下一个开始之前完成).它们使用不同的语法,并且在一些细节上有所不同,但是对于我来说,拥有2个功能上具有如此巨大重叠的功能似乎非常不灵活.我错过了什么?
在我开发Python的过程中,如果你设法重写那些循环通过你的ndarray并做了一些事情的代码,我会一直惊讶于事情会变得多快多少,同时在整个数组上运行的numpy函数.最近我越来越多地转向节点,我正在寻找类似的东西.到目前为止,我发现了一些东西,其中没有一个看起来很有希望:
据我所知,npms可以用C++编写,所以我想知道为什么节点没有类似numpy的库.对于那些需要这种力量的社区,是否对节点没有足够的兴趣?是否有希望ES6功能(列表推导)将允许javascript编译器自动将原生JS代码矢量化为C++速度?我可能错过了其他的东西吗?
编辑,以回应关闭投票:注意,我不是要求"什么是做xyz的最佳软件包".我只是想知道是否存在技术上的原因,在节点上没有包这么做,这是一个社会原因,或者完全没有理由,只有一个我错过的包.也许为了避免太多自以为是的批评,我想知道:我有大约10000个矩阵,每个100 x 100.将它们组合在一起的最佳方法是什么(*校正,合理快速)?
编辑2 经过一番挖掘,结果发现我正在谷歌搜索错误的东西.谷歌的"node.js科学计算"和一些非常有趣的笔记链接:
基本上据我所知,目前还没有人打扰过.此外,由于js TypedArrays中存在一些重大遗漏(例如64位整数),因此仅仅使用NPM可能很难增加良好的支持,而不是破坏引擎本身 - 这会破坏目的.然后,我没有进一步研究这最后的陈述.
我试图在一个步骤中将对象写入gzip压缩的json文件(最小化代码,并可能节省内存空间).我最初的想法(python3)是这样的:
import gzip, json
with gzip.open("/tmp/test.gz", mode="wb") as f:
json.dump({"a": 1}, f)
Run Code Online (Sandbox Code Playgroud)
然而TypeError: 'str' does not support the buffer interface,这失败了:我认为这与字符串没有被编码为字节有关.那么这样做的正确方法是什么?
我不满意的当前解决方案:
以文本模式打开文件可以解决问题:
import gzip, json
with gzip.open("/tmp/test.gz", mode="wt") as f:
json.dump({"a": 1}, f)
Run Code Online (Sandbox Code Playgroud)
但是我不喜欢文本模式.在我看来(也许这是错误的,但受此支持),文本模式用于修复行尾.这不应该是一个问题,因为json没有行结尾,但我不喜欢它(可能)搞乱我的字节,它(可能)更慢,因为它正在寻找行结束来修复,并且(最坏的)所有)我不明白为什么关于行结尾的东西修复了我的编码问题?
我有一个(python3)包具有完全不同的行为,具体取决于它的init()编辑方式(可能不是最好的设计,但重写不是一个选项).该模块只能init()编辑一次,第二次产生错误.我想使用py.test测试这个包(两个行为).
注意:包的性质使得这两种行为相互排斥,没有任何理由可以在单一程序中同时使用这两种行为.
test_xxx.py我的测试目录中有几个模块.每个模块都会按照需要的方式启动包(使用fixture).由于py.test启动python解释器一次,在一个py.test运行中运行所有测试模块失败.
猴子修补程序包以允许一秒钟init()不是我想要做的事情,因为有内部缓存等可能导致无法解释的行为.
我确实设置了我的Google Apps for Work Unlimited帐户以充当SAML2身份提供商并将我的Web应用程序注册为服务提供商(如下面的链接中所述).它工作得很好,我可以在用户登录谷歌后登录我的应用程序.我现在的问题是,我需要授予该用户基于其Google角色或组成员资格的资源访问权限,并且无法弄清楚如何将该成员资格信息发送回服务提供商.似乎我不能使用Attribute Mapping功能来映射"groups"用户字段.任何人都知道这是否是Google Apps for Work无限制>我是否可以用其他方式发送群组成员资格?怎么样?.我知道角色和团队成员是完全不同的事情.我只需要一种区分用户权限的方法.也许你可以想出另一种方法来区分它们?例如,我需要知道他们是管理员还是仅仅是Google Apps中的用户.我怎样才能做到这一点?
https://support.google.com/a/answer/6087519?hl=en
https://robinpowered.com/blog/how-to-set-up-saml-with-google-apps/
我正在(龙卷风)网络服务器上运行一个长时间的 CPU 密集型任务。我不想将此任务卸载到线程(目前)。在这个长时间运行的任务中,如何正确地“yield”控制事件循环,以便网络请求仍然得到服务(注意:我在这里以合作调度的方式使用“yield”,而不是在生成器的意义上使用“yield”) ,或 python 关键字yield)。
我的建议是做一个await asyncio.sleep(0),但是是否可以保证这不只是作为 NOP 实现?我一直在 asyncio 库中寻找专用函数来执行此操作,但到目前为止尚未找到。
示例(python 3.5 async/await 风格):
async def long_task():
for i in range(LARGE_NUMBER):
do_something(i)
if i % 100 == 0:
await asyncio.sleep(0)
Run Code Online (Sandbox Code Playgroud) 我的 HomeKit 上有一个外部和内部温度传感器。最近我遇到了一个问题,我想检查几天前的温度。据我所知,似乎没有办法从 HomeKit 获取历史数据。
作为替代方案,是否可以自己记录 homekit 数据?我知道 iOS 应用程序可以请求访问 HomeKit 数据,因此这可能是实现这一目标的一种方法。不过,我更愿意在手机关闭/没有网络时执行此操作。是否有一个我可以调用的(网络)API,以便从(例如)Raspberry PI 访问此数据,以便我可以定期记录此数据?
我正在尝试使用此问题中的方法捕获音频; 使用AVCaptureSession和AVCaptureAudioDataOutput.这似乎工作得很好1带来的不便:它在模拟器中不起作用.AVAudioRecorder和古老的SpeakHere演示应用程序在我的MacBook Pro上使用内置麦克风在模拟器中运行良好.
问题是在模拟器中[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]给出null,因此后续代码失败并显示消息(当它尝试添加null为AVCaptureSession的输入时):
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Can't add <AVCaptureDeviceInput: 0x9138b40 [(null)]> because the device does not support AVCaptureSessionPresetHigh. Use -[AVCaptureDevice supportsAVCaptureSessionPreset:].'
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以让它在模拟器中工作?
为了使我的 API 返回正确的时区字符串(正确的,我的意思是在最新规范中没有标记为“已弃用”的任何字符串;以便 API 的使用者对有效值有一些保证),我想检查pytz区域名称是否已弃用(甚至更好:哪些是规范的,哪些是别名)。
pytz有一个common_timezones字段,根据文档,“不包含不推荐使用的区域或历史区域,除了我认为常用的一些区域,例如美国/东部”。所以感觉这几乎可以完成工作,但还没有完全完成;因为确实“美国/东部”已被正式弃用。
显然,我现在可以手动获取未弃用区域的列表,或保留pytz考虑common_timezones但实际上已弃用的区域列表(请注意上面文档描述中的“例如”),但这意味着我应该更新此列表每次我更新 pytz 时都手动。
所以问题是,有没有办法在 pytz 中找出区域(名称)是否已弃用(或别名/规范)?
我正在编写一堆一起工作的 python 脚本,例如 tool1.py 将一些数据加载到数据库表中,tool2.py 从此表中读取数据,进行一些计算并将结果写入另一个表中,以及 daemon1.py是一个提供结果的网络服务器。每个工具和守护程序都有一大堆支持文件(仅该一个工具需要),并且需要自己的目录。此外,我确实有一些在所有工具之间共享的代码,例如config.py和database.py。直觉上,我是这样构建该项目的:
/README.md
/requirements.txt
/config.py # contains shared configuration
/database.py # shared code to connect to the database
/tool1/
tool1.py # entrypoint
[...] # bunch of other files only needed by tool1
/tool2/
tool2.py #entrypoint
[...] # bunch of other files only needed by tool2
/deamon1/
daemon1.py #entrypoint
[...] # bunch of other files only needed by daemon1
Run Code Online (Sandbox Code Playgroud)
然后,我使用命令运行我的工具和守护程序python tool1/tool1.py。然而这里的问题是 tool1.py 如何访问 config.py/database.py。我考虑了以下选项,对 python 中被认为是“正确”的方式感兴趣,或者我可能错过的任何替代方案(可能是布置项目的不同方式)。提供权威答案的链接将获得额外的业力奖励。
python ×3
python-3.x ×3
avfoundation ×1
c++ ×1
google-apps ×1
homekit ×1
ios ×1
javascript ×1
node.js ×1
numpy ×1
pytest ×1
python-3.5 ×1
pytz ×1
saml ×1