TinText

TinText进程通信

TinText的所有非GUI相关功能全部由process管理。

process会创建一个子进程,并持续监听主进程的命令。

设计上,TinText并不复杂,process创建了一条管道,管道口1交给主进程,管道口2交给子进程。也就是说,TinText的进程间通信采用“集束”方式,主进程需要用到的所有子进程功能均通过管道口1下发指令,管道口2持续监听,收到指令后根据指令名称调用对应的模块,并传递其它参数,执行命令。

好吧,这只是一个练手的,熟悉一下python的多进程操作

管道口1

举个比较抽象的例子,TinText需要清理超过两个月的图片,我们肯定希望这件事在后台运行,而且不要影响TinText的用户端使用。

那么只需要执行process.cache('clean','imgs','normal')即可,子进程会单独开一个新线程来处理。其中,normal指的是默认清理天数,由配置文件决定,同样可以根据process.config(...)命令得到相关配置信息。

管道口1得到返回值后,会返回给调用命令所使用的process函数,是否获取返回值由调用方法决定。

管道口2

管道口2由multi管理,通过循环,持续执行命令并监听新的命令,并将结果返回至管道口1。