0%

以python为例,多线程由于GIL的存在,所以有multiprocessing来缓解;但它不能面向多个计算节点编程,所以MPI来了。当面向多个计算节点编程时,程序的各部分之间通过来回传递消息的方式通信。要使得消息传递方式可移植,就需要采用标准的消息传递库。这就促成消息传递接口(Message Passing Interface, MPI)的面世,MPI是一种被广泛采用的消息传递标准,所以MPI并不是一种语言。

在使用多进程编程时,会经常涉及到进程之间通信的问题。除了借助文件、特殊变量等,还可以借助一些特殊的数据结构完成功能复杂的通信。并行应用常常需要在进程之间交换数据。python的Multiprocessing库有两个通信通道可以交换对象:队列(queue)和管道(pipe)。

使用多线程必须注意一个问题,如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到各种问题。如请求在代码在阅读时写入其他函数,即一个线程要读,一个线程要写,读线程占据着资源,写线程得不到资源,自然就会与理想的结果相违背。本文更侧重理论解读,某些场景下,这些概念可同样用到进程中;样例代码为C语言,其他语言仍然适用。

继承上文,通过一些极度简单的例子来理解多线程、多进程编程,承接理论接触,为后面的同步、死锁打下基础。

本博客来自于某课程的大作业。按照我之前建模的习惯,会直接『元胞自动机』设置规则直接模拟;但是却看到了通过优化来建立模型的做法。前者是基于规则的模拟,后者是凸规划问题下的求解。对于获得的解而言,在理论上还是后者更好一些,毕竟存在最优解。

开完一坑又一坑,这应该是GUI系列的完结稿了。时至今日,很多方法和函数已经忘记,一部分整理到了仓库,用时查阅;一部分学会了查官方文档。比如布局中的addSpacingaddStretch填充,以及不同空间该如何Qt.Align,需要大量的经验。用过一次就会知道功能,所以,官方文档永远的神。

众所周知MVC是个好东西。前阵子网上搜了下,但关于用PyQt5实现MVC的中文文档缺少之又少,优质的文档只搜到了一篇。既然这样,来,开个坑,学习新知识,吸引流量。话说,关于PyQt5,布局那里需要好好看看,容器类控件需要好好看看,还有多线程和自动化测试那块。但要写出完美GUI需要大量的代码经验和文档查询的能力。然后,嗯,这部分坑就填完了。

扯回正题:假设此时面临的场景是,一个软件涉及好几个页面,每个页面是单独的代码。且每个页面需要有自己的controller,最终所有的controller汇总到一起,统一管理。

本文中,文字只是辅助理解,务必读懂代码。