关于Python中多进程的问题
前言
最近为了提高我的人脸识别项目的效率,我决定使用多线程/进程,在这里谈谈心得。
一、多进程与多线程的区别
多任务可以由多进程完成,也可以由一个进程内的多线程完成。 进程是由若干线程组成的,一个进程至少有一个线程。 由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。
在这里找到一个关于多进程和多线程的不同之处的一个小栗子:
我们打个比方,假设你不幸正在准备中考,每天晚上需要做语文、数学、英语、物理、化学这5科的作业,每项作业耗时1小时。 如果你先花1小时做语文作业,做完了,再花1小时做数学作业,这样,依次全部做完,一共花5小时,这种方式称为单任务模型,或者批处理任务模型。 假设你打算切换到多任务模型,可以先做1分钟语文,再切换到数学作业,做1分钟,再切换到英语,以此类推,只要切换速度足够快,这种方式就和单核CPU执行多任务是一样的了,以幼儿园小朋友的眼光来看,你就正在同时写5科作业。 但是,切换作业是有代价的,比如从语文切到数学,要先收拾桌子上 ...
frp服务器的搭建与使用
前言
转载自https://www.cnblogs.com/sttchengfei/p/12594945.html
以windows远程协助映射为例,其他服务的配置大同小异,具体请查看github
https://github.com/fatedier/frp
服务端(公网ip)
下载对应平台的程序
1wget https://github.com/fatedier/frp/releases/download/v0.24.1/frp_0.24.1_linux_amd64.tar.gz
解压,修改配置文件
只需要frps,可以把frpc删掉,然后修改frps.ini文件
1234567[common]bind_port = 7000log_file = ./frps.loglog_level = infodisable_log_color = falsemax_pool_count = 100log_max_days = 3
随便弄一个空闲端口和客户端通信。
1./frps -c frps.ini
启动服务
客户端
同样下载对应平台的发布程序,同理可以把frps删掉,只保留 ...
我的2020
2020年年初的时候面临严峻的新冠疫情,我蜗居在家学习,备战即将到来的中考。说实话直到开学之前,我一直没有什么紧迫感。直到上学后,看到班主任似乎才有了一点要中考的感觉。
中考的脚步一步步逼近,我的成绩也波动颇大,最差能有二百三二百四,最好也有七十几。每次考试的心情都如同过山车一般。记得考前最后一次七联考年级38名,班级第一。我这个在我们班做了千年老二的人拿了最后也是第一个班级第一。我对半开玩笑半认真地说,我恐怕再也拿不了班级第一了。
我的初中班级很令人温暖。我们前面的几个男生虽然嘴上互相怼,“wzc今天是w三八歪”,“pyx中考又要年级第二了”,“wzm暴发户要最后一次爆发咯”……但是恰恰是这些不走心的话语,在毕业以后回忆起来居然是最温暖的鼓励。
好巧不巧地是,zh中考的休息学校正好是二中,我们班一个体育生(二中加100分)打趣说:“wzc要是考不好就和我们一起来二中嗨!”,我也附和着哈哈大笑,不曾想这居然一语成谶。
关于中考,我永远不会忘记的就是数学考试,那天早上的大雨令人猝不及防,我的鞋和身上全是湿的,滴着水的我走进了考场。一考完其实明明知道自己肯定考砸了,还是不死心地对了答案 ...
Linux下C/C++的静态库制作与使用
前言
静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。 ——“百度百科”
库一共分为两种,一为静态库,二为动态库。在实际运用中各有各的优势。
静态库: 当程序与静态库连接时,库中目标文件所含的所有将被程序使用的函数的机器码被 copy 到最终的可执行文件中。 这意味着单个可执行程序的体积会更加庞大,而且在制作过程中要对整个项目进行完整的编译,其优点是运行速度较快且可移植性较好。
动态库: 与共享库连接的可执行文件只包含它需要的函数的引用表,而不是所有的函数代码,只有在程序执行时, 那些需要的函数代码才被拷贝到内存中。 通俗的理解,把一个程序中的多个函数拆分到单个文件中,在主函数中只需要记录需要的函数的引用表,所以单个体积相对较小,但是文件较多,并且在链接动态库时效率会比静态库更加低下。其优点是占用空间较小且便于更新。
——————————————华丽的分割线——————————————
今天先水一篇关于Linux下静态库的制作与使用。
首先先在同一目录下准备三个文 ...
洛谷 “滑雪”P1434题解——记忆化搜索
在洛谷 “滑雪” P1434题解——DP中介绍了这道题的动态规划解法,下面介绍的则是记忆化搜索。事实上我也是dp的初学者,我决定用这道经典的题目来体会dp和记忆化的正真思路。未来会对dp以及记忆化搜索进行总结。
首先先亮出喜闻乐见的大爆搜。
12345678910111213141516171819202122232425262728#include <bits/stdc++.h>using namespace std;int n,m;int i,j;int d[105][105],a[105][105];int maxn;void dfs(int dep,int x,int y){maxn=max(dep,maxn);//取最大深度 //四个方向进行遍历if (a[x+1][y]<a[x][y]) dfs(dep+1,x+1,y);if (a[x-1][y]<a[x][y]) dfs(dep+1,x-1,y);if (a[x][y+1]<a[x][y]) dfs(dep+1,x,y+1);if (a[x][y-1]<a[ ...
洛谷 \"滑雪\" P1434题解——DP
作为洛谷弱狗的第一篇题解,那必须要写的详细一点/doge
还记得初二的时候听老师讲动态规划,完全就没听懂,现在上了高中,再重温动态规划,似乎有了新的感悟。
先说整体做法:优先队列+线性动态规划 42ms
由于x和y的范围在1~100区间,所以直接暴力搜索一定会超时。
一个格子中可以有四个方向分别滑过来:[x+1][y], [x-1][y], [x][y+1],[x][y-1]。先分别判断这四个方位是否比中心的格子低。如果比中心的格子低,那么有如下的动态转移方程:
d[i][j]=max{d[i][j],d[x+1][y]+1,d[x-1][y]+1,d[x][y+1]+1,d[x][y-1]+1}
但是动态规划要考虑无后效性,如果只是挨个遍历,那么结果肯定是错误的。因此要维护一个从小到大的优先队列。从低的点算起,那么对于后续高的点没有影响。
其余请浏览代码注释部分。
123456789101112131415161718192021222324252627282930313233343536373839404142434445#include <bits ...