O5oz6z3

O5oz6z3

V2EX 第 481583 号会员,加入于 2020-04-04 16:26:00 +08:00
鱼与熊掌,二者何不得兼?three.cat 三脚猫编程;冥间思而不学家,简称民撕者;
根据 O5oz6z3 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
O5oz6z3 最近回复了
@caicaiwoshishui #45 问得好,这个问题,我也不会,有请真正的大佬指点……

@ysc3839 #36 补充一下,虽然不靠谱,稍微改了改糊了一个实现:
from asyncio import Future, Task, set_event_loop, AbstractEventLoop
from collections import UserList

class Loop(UserList, AbstractEventLoop):
...def call_soon(self, callback, *args, context=None):
......self.append(lambda: callback(*args))
...def get_debug(*_): pass
...__hash__ = lambda x:id(x)

callback_list = Loop()
set_event_loop(callback_list)
......
Task(test())
Task(test())
......
@ysc3839 #36 虽然我不是很懂 asyncio 和 C++,也不知道你的需求要怎么实现,但我猜你的 python 代码出错是因为你用了 asyncio.Future 。`Future(loop=None)` 要么默认绑定 asyncio 的事件循环,要么你传进去一个自定义 loop,这个 loop 的接口要兼容 asyncio 的 eventloop,大概像是 #41 楼说的那样?

而且 `async def test():...; test()` 本来也无法直接运行,大概需要这样运行 `asyncio.Task(test(), loop=None)`?

以下是个人理解。如果你要借用 async/await 语法糖,就要实现一个兼容 async-function/coroutine 的事件循环,也就是 asyncio 的工作,相当于 js 自带的事件循环。

虽然不知道要怎么实现 sync-callback 结合 async/await,个人理解就是 #19 楼那样,async 语法是用来等待 io 的,asyncio.sleep 就是模拟 io,所以也很好奇在没有 io 的情况下要怎么用 async 语法代替回调地狱。(顺便一提,上次在 /790207#90 的时候我的确说错了,py 协程可以是异步生成器,支持随意 suspend resume )
好家伙,血糖拉满。稍微跑个题……虽然看不懂 pegen 的语法,但感觉用途广泛,似乎语法糖、超集、DSL 、多国语言本地化、抛弃游标卡尺都能更容易实现,感觉这个自由度有点夸张?
想到一个麻烦的做法:
def cmp(a, b):
  lt = val.get((a,b))
  if lt == 1:
   return -1
  gt = val.get((b,a))
  if gt == 1:
   return 1
  return -1 if a<b else 1 if a>b else 0
感觉像 #10 楼那样将 val 换成 set(val.keys()) 也没有问题。这个自定义排序似乎可以再加些功能,比如优先度排序?
@cnrting #36 宏观韭菜盒子确实需要根据食谱调度韭菜来制作,就做菜而言,食材韭菜确实不具有“主观能动性”……将程序命名为“韭菜粒子”搞不好很有噱头……


再顺带一提,后来找了些资料,发现上面一些观点其实早就被人讨论过了:
1. “宇宙是否运行时”(大邱奇-图灵论题),本帖是“现实世界对应数据世界”的逆命题。不过运行时是串行的,宇宙是并行的。
2. “时空的本质如何观测”(空穴论证和绝对时空),不知道是不是莱布尼兹说的,时空只有在观测物质与运动的时候才具有意义。
3. 巧合的是,“cpu 时间片”本来就叫做量子 /quantum,虽然不知道原因。
18 天前
回复了 imn1 创建的主题 Python 有没有办法 hash 一个 object?
没做过,想到几个麻烦的思路,权当参考。
1. 用环境变量 pythonhashseed 固定 hash()的结果,但是未必可靠。
2. 感觉本质上和 #5 楼说的一样,根据你的具体情况来决定将函数的哪些属性作为特征来哈希。比如说,包含函数的源码行数与文件位置、函数名、参数签名等等。

将函数的几个属性转为元组也能直接用作哈希,或者进一步将元组用 str()字符串化后再用 md5 之类的哈希函数。
如果用字典,就 json.dumps(sort_keys=True)之类的(没用过但听说还有 frozenset(dict.items())、deepdiff.DeepHash(dict)[dict]、frozendict 之类的)
@easing #34 确实如此,正因为现实的底层运作无法观测,所以只能进行形而上的思考,就这一点而言,我们简直就像是无法访问沙箱底层的程序一样。

人脑的运作原理确实很像计算机(或者反过来说计算机像人脑),但是这个对应又回到宏观尺度了。至于殇增殇减信息论这些概念,就是书到用时方恨少了……

不过顺带一提,之前提到的“能量即调度方式”,让我想到了另一个假设:现实能量相似于数据世界的“cpu 时间片”,基于这个假设,能量和时间就可以互相转换,细思恐极……
@easing #32 如果是说“靠谱”的话,在标题中已经说明本帖讨论的前提是(科幻)“脑洞”,所以数据比作粒子尚算合理。而“物理规则”这个无形之物,规则运作的原理不明,与数据、粒子、运行时这些可被观测的“有形之物”是有区别的。

虽然我不懂哲学上的存在与时间,“时间赋予了其意义”也没错,甚至可以说是根本性的前提,但是“时间”这个无形无定论的不明之物我也不知道要怎么讨论。不过“时间”确实是我没有考虑到的方面,甚至可以说“运行时”本身就相当于静止的数据世界的“时间”。

关于“自由运动”这一点,我还没想好该怎么准确地定义,我不是指因果上、意志上、随机的那种自由,而是指独立的、自立的那种不需要依靠外界的自由,比如说程序依靠运行时,而粒子在现实中运动不需要“运行时”,只是粒子的运动规律符合物理定律罢了。
@easing #29
1. 将宇宙视为运行时,我也这么想过,但是将能量视为物质的调度方式 /策略,这个概念有点抽象,我尚在理解中。
2. 我之所以强调运行时,是因为这是程序与物质最明显的区别,我也想过将宇宙也比作运行时,但是这一点缺乏事实根据,异想天开的观点不方便讨论。
至于你所说的“程序才是粒子”,我的理解是,在数据层面再抽象一层“粒子层”,每个“粒子对象”包含数据和程序。这样虽然没问题,但我想着眼于更底层一些,例如说数据存放在“内存空间”中,程序也作为数据存放在内存,内存空间里放置的是数据,数据可以视作内存空间的“粒子”,每个“数据粒子”都由 01 两种基本元素构成。

@lscho #30 是啊,现实中所有东西都能运动,但在数据世界中,数据不能运动,只有程序才能“运动”,所以想问有什么将数据和程序对应现实的恰当类比。
@MiketsuSmasher #22 好主意,我看到过 setuptools 也是用这种写法
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1104 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 8ms · UTC 19:05 · PVG 03:05 · LAX 12:05 · JFK 15:05
♥ Do have faith in what you're doing.