loop

How to reconnect a client automatically on ratchetphp?

匿名 (未验证) 提交于 2019-12-03 00:44:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm using rachetphp to create a client for an api server. But i have a problem, when my connection close, whatever the reason, i can't reconnect automatically. here the lib i use : https://github.com/ratchetphp/Pawl <?php require __DIR__ . '/vendor/autoload.php'; $loop = React\EventLoop\Factory::create(); $connector = new Ratchet\Client\Connector($loop); $connector('ws://127.0.0.1:9000', ['protocol1', 'subprotocol2'], ['Origin' => 'http://localhost']) ->then(function(Ratchet\Client\WebSocket $conn) { $conn->on('message', function(\Ratchet

Js 的事件循环(Event Loop)机制以及实例讲解

匿名 (未验证) 提交于 2019-12-03 00:30:01
大家都知道js是单线程的脚本语言,在同一时间,只能做同一件事,为了协调事件、用户交互、脚本、UI渲染和网络处理等行为,防止主线程阻塞,Event Loop方案应运而生… 个人博客了解一下: obkoro1.com js作为主要运行在浏览器的脚本语言,js主要用途之一是操作DOM。 在js高程中举过一个栗子,如果js同时有两个线程,同时对同一个dom进行操作,这时浏览器应该听哪个线程的,如何判断优先级? 为了避免这种问题,js必须是一门单线程语言,并且在未来这个特点也不会改变。 因为js是单线程语言,当遇到异步任务(如ajax操作等)时,不可能一直等待异步完成,再继续往下执行,在这期间浏览器是空闲状态,显而易见这会导致巨大的资源浪费。 当执行某个函数、用户点击一次鼠标,Ajax完成,一个图片加载完成等事件发生时,只要指定过回调函数,这些事件发生时就会进入执行栈队列中,等待主线程读取,遵循先进先出原则。 要明确的一点是,主线程跟执行栈是不同概念,主线程规定现在执行执行栈中的哪个事件。 主线程循环:即主线程会不停的从执行栈中读取事件,会执行完所有栈中的同步代码。 当遇到一个异步事件后,并不会一直等待异步事件返回结果,而是会将这个事件挂在与执行栈不同的队列中,我们称之为任务队列(Task Queue)。 当主线程将执行栈中所有的代码执行完之后,主线程将会去查看任务队列是否有任务 。如果有

Image动画

匿名 (未验证) 提交于 2019-12-03 00:17:01
前几课讲的静态Image挺有趣的,但是如果能有动画的效果,那就更有趣了,mPython做出动画效果也不难。用images的列表,list。 下面就是一个列表: eggs bacon tomatoes Python中这样写: shopping = ["Eggs","Bacon","Tomatoes"] 叫shopping的这个列表,有三件物品,方括号括起来是列表,多个物品用逗号分隔,这个例子中,是双引号引起来的三个字符串,其实列表中可以包括任何东西,比如数字 primes = [2,3,5,7,11,13,17,19] 记住数字不要加引号,2与"2"是不同的。你不太理解也没有关系,习惯了就好了。 一个列表中,存有各种数据类型也是可以的。 mixed_up_list = ["hello",1.234,Image.HAPPY] 注意到了么?开心图案也可以放在列表中。我们可以动画显示图案列表,有几个内置的图案列表,Image.ALL_CLOCKS和Image.ALL_ARROWS from microbit import * display.show(Image.ALL_CLOCKS, loop=True, delay=100) from microbit import * display.show(Image.ALL_ARROWS, loop=True, delay=100)

asyncio动态添加任务

匿名 (未验证) 提交于 2019-12-03 00:15:02
asyncio.run_forever()下动态添加任务 方法一、asyncio.run_coroutine_threadsafe(coroutine, loop) 方法二、asyncio.call_soon_threadsafe(callback, *args, context=None) 方法一、实例run_coroutine_threadsafe 通过添加新的coroutin对象,放入loop内,动态添加。(爬虫正解) import asyncio import time from threading import Thread def start_loop(loop): asyncio.set_event_loop(loop) print("start loop", time.time()) loop.run_forever() async def do_some_work(x): print('start {}'.format(x)) await asyncio.sleep(x) print('Done after {}s'.format(x)) new_loop = asyncio.new_event_loop() t = Thread(target=start_loop, args=(new_loop,)) t.start() asyncio.run

1016 Numbers That Count

匿名 (未验证) 提交于 2019-12-03 00:04:02
题目大意: 描述 “Kronecker's Knumbers”是一家生产塑料数字的小公司,用于标牌(剧院帐篷,加油站价格显示等)。所有者和唯一员工Klyde Kronecker通过维护库存书来跟踪他使用的每种类型的数字。例如,如果他刚刚签了一个包含电话号码“5553141”的标志,他会在他的书的一栏中写下“5553141”号码,在下一栏中他会列出每个数字中有多少使用:两个1,一个3,一个4和三个5。 (不使用的数字不会出现在清单中。)他以浓缩形式编写库存,如下所示:“21131435”。 前几天,Klyde填写了订单号码31123314,并惊讶地发现这个号码的库存与号码相同---它有三个1,一个2,三个3和一个4!他称这是一个“自我盘点号码”的例子,现在他想知道哪些号码是自我盘点的,或者通过下面描述的盘点操作的迭代应用导致自我盘点号码。你被雇用来帮助他进行调查。 给定任何非负整数n,其库存是另一个整数,由整数c1 d1 c2 d2 ... ck dk的串联组成,其中每个ci和di是无符号整数,每个ci为正,di满足0 <= d1 <d2 <... <dk <= 9,并且,对于出现在n中任何位置的每个数字d,对于某些i,d等于di,并且在n的十进制表示中d恰好出现ci次。例如,为了计算5553141的库存,我们设置c1 = 2,d1 = 1,c2 = 1,d2 = 3等

MongoDB数据库(6)__motor

匿名 (未验证) 提交于 2019-12-02 23:49:02
2019.7.22: motor是异步实现python操作数据库的工具。能减少后端访问数据库的延迟。 Motor 是一个异步实现的 MongoDB 存储库 Motor 与 Pymongo 的配置基本类似。连接对象就由 MongoClient 变为 AsyncIOMotorClient 了。 一、连接 # 普通连接 client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017') # 副本集连接 client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://host1,host2/?replicaSet=my-replicaset-name') # 密码连接 client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://username:password@localhost:27017/dbname') # 获取数据库 db = client.zfdb # db = client['zfdb'] # 获取 collection collection = db.test # collection = db['test'] 二、添加一条记录 async def do_insert():

[bx]和loop指令

匿名 (未验证) 提交于 2019-12-02 23:42:01
要完整地描述一个内存单元,需要两种信息: 内存单元 内存单元的长度(类型) 在debug中可以直接使用 [0] 来代替 ds:0 但是在汇编语言中却不能够直接这样使用。只有两种选择: 将偏移地址放在bx寄存器,使用 [bx] 加上段前缀 描述性符号 () ,该符号标识一个内存地址指向的字/字节空间 约定符号idata标识常量 loop指令的格式是:loop标号,cpu执行loop指令的时候执行两部操作: (cx)=(cx)-1 判断cx中的值是否为0,为0则向下执行,否则转向标号处 所以一般cx中存放的即为循环的次数 cx和loop指令配合实现循环功能的要点: cx中存放循环次数 loop指令中的标号所标识地址要在前面 要循环执行的程序段要写在标号和loop指令的中间 如果需要直接执行完循环,则使用p执行loop指令,或者使用g指令执行loop指令的下一条指令。p指令的指令格式为 g 代码段偏移地址 ,他将跳到当前代码段和偏移地址组成的指令地址。 注意, 无论是使用p指令还是使用g指令,循环都会被执行完成 。 同时, 汇编语言源程序中,数据不能以字母开头 。 在汇编源程序中,如果使用指令访问一个内存单元,则在指令中必须用 [] 来表示内存单元于所在段的偏移地址,如果 [] 中为一个idata,则需要在其之前显式给出段寄存器。否则将认为idata。 如果在 [] 里使用寄存器

集成 AWTK 到 iotjs

匿名 (未验证) 提交于 2019-12-02 23:39:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/absurd/article/details/91386690 集成 AWTK 到 iotjs iotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot 设备应用程序的首选。 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。 用 C 语言来扩展 iotjs 不是太难的事情,但是将 GUI 集成到 iotjs 却是有些麻烦的。主要原因在于 iotjs 有个主循环 (main loop),GUI 自己也有个主循环 (main loop),两者不同并存,只能选一个。这里 AWTK 为例,介绍一下如何将 GUI 集成到 iotjs 中,这对将 GUI 集成到 nodejs 也是有参考价值。 一、以谁为主 在集成 AWTK 到 iotjs 时,我选择了以 iotjs 的主循环为主

python asyncio run_until_complete

匿名 (未验证) 提交于 2019-12-02 22:51:30
import asyncio def callback ( loop , i ): print ( "success time {} {}" . format ( i , loop . time ())) async def get_html ( url ): print ( "start get url" ) await asyncio . sleep ( 1 ) print ( "end get url" ) # 两种创建的方法 if __name__ == "__main__" : loop = asyncio . get_event_loop () # get_future = asyncio.ensure_future(get_html("http://www.imooc.com")) task = loop . create_task ( get_html ( "http://www.imooc.com" )) loop . run_until_complete ( task ) # 接收的是一个future对象 转载请标明出处: python asyncio run_until_complete 文章来源: python asyncio run_until_complete

手动制作BIOS和EFI多启动U盘

旧街凉风 提交于 2019-12-02 14:31:30
原文链接:https://www.lainme.com/doku.php/blog/2017/07/%E5%88%B6%E4%BD%9Cbios%E5%92%8Cefi%E5%A4%9A%E5%90%AF%E5%8A%A8u%E7%9B%98 准备分区 U盘使用的是MBR分区表(GPT应该也行),并分为两个区: 第一分区:FAT32格式,作为引导分区/EFI分区,大小以100MB为宜。 第二分区:EXT4或其他你喜欢的格式,存放ISO和其他文件。 安装引导 启动引导使用GRUB,并假设第一分区是/dev/sdb1。先挂载分区 sudo mount /dev/sdb1 /mnt 然后安装BIOS引导 sudo grub-install --target=i386-pc --boot-directory=/mnt/boot --recheck /dev/sdb 再安装EFI引导 sudo grub-install --target=x86_64-efi --efi-directory=/mnt --boot-directory=/mnt/boot --removable --recheck 配置引导 假设其他文件都存放于第二分区(/dev/sdb2),并包含以下目录/文件 -- slax/ -- images/archlinux.iso -- images/ubuntu-gnome