小编ura*_*sjr的帖子

如何学习如何实现自定义Python asyncio事件循环?

我正在考虑实现一个新的事件循环来插入asyncio基于现有的运行循环实现,如Cocoa NSRunLoop和Qt QEventLoop.但是很难找个地方开始.

文档说该系统设计为可插拔的,但它没有确切说明如何做到这一点.我应该开始AbstractEventLoop,还是BaseEventLoop?什么方法做什么,我需要提供哪些组件?我发现唯一有用的替代实现是uvloop,但发现很难理解,因为它很大程度上依赖于我不熟悉的Cython和libuv.

是否有关于如何完成事件循环实现的文章,以及如何制作自定义循环?或者参与程度较低,我可以更快地解决问题?谢谢你的任何指示.

python

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

如何禁止自动保存"文件已被其他应用程序更改"警报?

我有一个NSDocument从磁盘提供文本文档的子类.我正试图在检测磁盘上的文件更改时自动刷新.我这样覆盖了-presentedItemDidChange:

- (void)presentedItemDidChange
{
    [super presentedItemDidChange];
    // Ignoring bundles and error-handling for the moment.
    NSData *newData = [NSData dataWithContentsOfURL:self.presentedItemURL];
    self.textView.string = [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding];
}
Run Code Online (Sandbox Code Playgroud)

在另一个应用程序中更改文件时,UI会刷新.问题是,当我尝试在另一个应用程序修改文档后将文档保存在我的应用程序中时,我得到了这个对话框:

保存外部修改文档时发出警报

我有点想知道为什么会发生这种情况(不确定它是否正确):文档的修改时间晚于(因为它被其他应用程序修改),而不是我应用程序中最新保存的版本.但是我可以通知自动保存系统我已经用它做了什么让它消失了吗?或者我在刷新文档时做错了,我应该以其他方式正确处理文档版本?我需要考虑外部应用程序支持或不支持自动保存.

提前致谢.

macos cocoa objective-c

7
推荐指数
1
解决办法
980
查看次数

是否可以代理Python str并使连接工作?

我正在尝试实现一个懒惰评估的str类.我现在所拥有的就像是一样

class LazyString(object):

    __class__ = str

    def __init__(self, func):
        self._func = func

    def __str__(self):
        return self._func()
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,它可以正常工作(除了我的目的),除了一个str.join:

' '.join(['this', LazyString(lambda: 'works')])
Run Code Online (Sandbox Code Playgroud)

失败了

TypeError: sequence item 1: expected string, LazyString found
Run Code Online (Sandbox Code Playgroud)

经过一番探索后,似乎没有任何神奇的功能.join似乎在核心实现中是硬编码的,只有有限的内置类型的实例可以使它工作而不是实际的str.

那么我真的没有选择,或者还有其他我不知道的方式吗?

python

6
推荐指数
1
解决办法
402
查看次数

标签 统计

python ×2

cocoa ×1

macos ×1

objective-c ×1