以python为例,多线程由于GIL的存在,所以有multiprocessing来缓解;但它不能面向多个计算节点编程,所以MPI来了。当面向多个计算节点编程时,程序的各部分之间通过来回传递消息的方式通信。要使得消息传递方式可移植,就需要采用标准的消息传递库。这就促成消息传递接口(Message Passing Interface, MPI)的面世,MPI是一种被广泛采用的消息传递标准,所以MPI并不是一种语言。
操作系统『四』:进程通信
本文字数: 8.1k 阅读时长 ≈ 7 分钟
在使用多进程编程时,会经常涉及到进程之间通信的问题。除了借助文件、特殊变量等,还可以借助一些特殊的数据结构完成功能复杂的通信。并行应用常常需要在进程之间交换数据。python的Multiprocessing库有两个通信通道可以交换对象:队列(queue)和管道(pipe)。
操作系统『三』:进程同步
本文字数: 7.2k 阅读时长 ≈ 7 分钟
使用多线程必须注意一个问题,如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到各种问题。如请求在代码在阅读时写入其他函数,即一个线程要读,一个线程要写,读线程占据着资源,写线程得不到资源,自然就会与理想的结果相违背。本文更侧重理论解读,某些场景下,这些概念可同样用到进程中;样例代码为C语言,其他语言仍然适用。
操作系统『二』:简单的多线程编程
本文字数: 12k 阅读时长 ≈ 11 分钟
继承上文,通过一些极度简单的例子来理解多线程、多进程编程,承接理论接触,为后面的同步、死锁打下基础。
弹性光网络选路和频谱分配问题建模
本文字数: 4.9k 阅读时长 ≈ 4 分钟
本博客来自于某课程的大作业。按照我之前建模的习惯,会直接『元胞自动机』设置规则直接模拟;但是却看到了通过优化来建立模型的做法。前者是基于规则的模拟,后者是凸规划问题下的求解。对于获得的解而言,在理论上还是后者更好一些,毕竟存在最优解。
PyQt5多线程
本文字数: 5.9k 阅读时长 ≈ 5 分钟
开完一坑又一坑,这应该是GUI
系列的完结稿了。时至今日,很多方法和函数已经忘记,一部分整理到了仓库,用时查阅;一部分学会了查官方文档。比如布局中的addSpacing
和addStretch
填充,以及不同空间该如何Qt.Align
,需要大量的经验。用过一次就会知道功能,所以,官方文档永远的神。
PyQt5通过信号实现MVC
本文字数: 5.4k 阅读时长 ≈ 5 分钟
众所周知MVC是个好东西。前阵子网上搜了下,但关于用PyQt5
实现MVC的中文文档缺少之又少,优质的文档只搜到了一篇。既然这样,来,开个坑,学习新知识,吸引流量。话说,关于PyQt5
,布局那里需要好好看看,容器类控件需要好好看看,还有多线程和自动化测试那块。但要写出完美GUI需要大量的代码经验和文档查询的能力。然后,嗯,这部分坑就填完了。
扯回正题:假设此时面临的场景是,一个软件涉及好几个页面,每个页面是单独的代码。且每个页面需要有自己的controller
,最终所有的controller
汇总到一起,统一管理。
本文中,文字只是辅助理解,务必读懂代码。