TinText的所有非GUI相关功能全部由process
管理。
process
会创建一个子进程,并持续监听主进程的命令。
设计上,TinText并不复杂,process
创建了一条管道,管道口1交给主进程,管道口2交给子进程。也就是说,TinText的进程间通信采用“集束”方式,主进程需要用到的所有子进程功能均通过管道口1下发指令,管道口2持续监听,收到指令后根据指令名称调用对应的模块,并传递其它参数,执行命令。
好吧,这只是一个练手的,熟悉一下python的多进程操作
举个比较抽象的例子,TinText需要清理超过两个月的图片,我们肯定希望这件事在后台运行,而且不要影响TinText的用户端使用。
那么只需要执行process.cache('clean','imgs','normal')
即可,子进程会单独开一个新线程来处理。其中,normal
指的是默认清理天数,由配置文件决定,同样可以根据process.config(...)
命令得到相关配置信息。
管道口1得到返回值后,会返回给调用命令所使用的process
函数,是否获取返回值由调用方法决定。
管道口2由multi
管理,通过循环,持续执行命令并监听新的命令,并将结果返回至管道口1。