基于队列queue实现的线程池

本文通过文章同步功能推送至博客园,显示排版可能会有所错误,请见谅!写在前文:在Python中给多进程提供了进程池类,对于线程,Python2并没有直接提供线程池类(Python3中提供了线程池功能),而线程池在并行中应用较广泛,因此实现一个进程池的功能十分必要。本文基于队列(queue)功能来实现线程池功能。在Python3标准库中提供了线程池、进程池功能,推荐使用标准库。fromconcurrent.futuresimportThreadPoolExecutorfromconcurrent.futuresimportProcessPoolExecutor实现代码:#!/usr/bin/envpython3#-*-coding:utf-8-*-__auth__="SongWei"importthreading,queue,timeclassThreadpool:'''基于队列queue实现的线程池'''def__init__(self,max_thread=1):'''创建进程队列'''self.queue=queue.Queue(maxsize=max_thread)defapply...

Python 70行代码实现简单算式计算器

描述:用户输入一系列算式字符串,程序返回计算结果。要求:不使用eval、exec函数。实现思路:找到当前字符串优先级最高的表达式,在算术运算中,()优先级最高,则取出算式最底层的(),再进行加减乘除运算。对于加减乘除,也要确立一个优先级,可以使用一个运算符列表,用for循环逐个处理运算符,并且要考虑同级情况(如for遍历至*时,也要考虑同级别的是否要提前运算)。不断循环上述过程,直到最终得到一个结果。关键点:使用re模块匹配出当前状态下优先级最高的算式。result=re.search('([^()]+)',s)实现代码:importre'''根据本逻辑,‘-’必须早于‘+’循环否则特殊情况会报错原因是若出现符号--,会被处理为+,若+优先遍历,最后+将无法被处理'''oper_char=['^','*','/','-','+']defformat_str(s):'''除去空格和两边括号'''returns.replace('','').replace('(','').replace(')','')defhandle_symbol(s):...

【Redis+PHP】利用redis的zset实现游戏排行榜功能

1、需求:①完成游戏排行榜实时刷新②查看当前用户的排名、积分2、参考文章:https://www.cnblogs.com/clubs/p/11691580.html(博主强推)           https://www.cnblogs.com/anny-1980/p/4583806.html (Redis的ZSET有序集合常用语法)3、实现原理:不使用MySQL进行存储,改用redis的zset实现,单机支持百万级并发,数据热更新4、附录我自己封装好的一个laravel5的Redis排行榜类:<?php/***CreatedbyZendStudio.*User:Xuzhz<857328943@qq.com>*name:Redis的ZSET实现游戏排行榜实时刷新*Date:2019年12月30日*Time:下午4:30:23*/namespaceAppDao;useIlluminateSupportFacadesRedis;classAtminiRa...

【PHP+nginx+php-fpm】探讨它们的运行机制和原理

1、PHP+nginx+php-fpm的运行机制和原理Nginx是非阻塞IO&IO复用模型,通过操作系统提供的类似epoll的功能,可以在一个线程里处理多个客户端的请求。(非阻塞,无需等待返回)Nginx的进程就是线程,即每个进程里只有一个线程,但这一个线程可以服务多个客户端。PHP-FPM是阻塞的单线程模型,pm.max_children指定的是最大的进程数量,pm.max_requests指定的是每个进程处理多少个请求后重启(因为PHP偶尔会有内存泄漏,所以需要重启).PHP-FPM的每个进程也只有一个线程,但是一个进程同时只能服务一个客户端。(阻塞,需等待PHP返回结果)大多数的Linux程序都倾向于使用进程而不是线程,因为Linux下相对来说创建进程的开销比较小,而Linux的线程功能又不是很强大。0 总结:1、nginx和php-fpm都是多进程,一个进程只有一个线程;2、nginx一个线程是非阻塞/io多路复用/epoll模型,将请求分发后无需等待,仅监听回调结果3、php-fpm一个线程是阻塞模型,必须等待该客户端请求php服务端返回数据,下一个ngin...

【PHP】php实现二进制、八进制、十进制、十六进制之间各自转换的函数

<?php/*常见的进制:二进制  binary      ----->bin八进制  octal      ----->oct十进制  decimal      ----->dec十六进制  hexadecimal   ----->hexphp提供了几常见进制之间转换的函数二进制转为其他进制binoct();//转为八进制bindec();//转为十进制binhex();//转为十六进制八进制转为其他进制octbin();//转为二进制octdec();//转为十进制octhex();//转为十六进制十进制转为其他进制decbin();//转为二进制decoct();//转为八进制dechex();转为十六进制十六进制转为其他进制hexbin();转为二进制hexoct();//转为八进制hexdec();//转为十六进制上面列举了这么多,其实自己感觉一点用没有,对于上面的这些函数,你只需要急着bin、oct、dec、hex就可以了,你要把a进制转为b进制,那就是ab()举个简单的例子:把二进制(bin)转为十进制(dec):bindec();就这么简单...

【Swoole】php7.1安装swoole扩展

参照:https://zixuephp.net/article-430.html1、源码编译安装,PHP版本7.1.332、在已经编译好安装的php7.1中安装swoole扩展。一、下载swoole扩展    下载地址:http://pecl.php.net/package/swoolewget -c http://pecl.php.net/get/swoole-4.4.4.tgz或者ftp上次源码包,tar-xzvfswoole-4.4.4.tgz二、解压swoole包bashtar xzvf swoole-4.2.1.tgzcd swoole-4.2.1三、生成configure配置文件/usr/local/php/bin/phpize四、指定php配置文件进行预编译./configure --with-php-config=/usr/local/php/bin/php-config五、编译和安装make maketest--报错proc_open未开启,修改php.ini...

【phpstudy2016】apache配置Tp5.0,获取表单数据总是多了一个路由变量,解决

1、用的apahce配置tp5.0的php环境2、发现input()过来的数据,总是多了一个变量,那就是路由变量,类似【array(2){["/index/index/form_submit_html"]=>string(0)""["username"]=>string(6)"sakura"}????????  多了/index/index/form_submit_html这个参数,,,】3、解决:把项目根路径下的.htaccess文件中的RewriteRule^(.)$index.php?/$1[QSA,PT,L]改成RewriteRule^(.*)$index.php[L,E=PATH_INFO:$1] ...

CENTOS6.3 安装nginx + php +mysql

首先安装nginx linux的yum命令不知道是哪位大仙发明的真是方便 但也有权限的问题如果安装过程中提示youneedtoberoottoperformthiscommand意思就是说你需要获得root的去权限方法:进入终端 输入su 回车然后输入你的root的密码 即可安装nginx之前需要安装一些必须的软件g++、gcc、openssl-devel、pcre-devel、和zlib-devel、[root@admin]#yuminstallgc-c++运行中会碰到让你选择y/n统统y[root@admin]#yum-yinstallzlibzlib-developensslopenssl--develpcrepcre-devel至此安装之前准备工作结束,现在正式安装nginx 下载地址为http://nginx.org/en/download.html 测试机安装的nginx版本为nginx-1.5.10.tar.gz和pcre-8.00.tar.gz安装pcre:[root@adminlocal]#tar-...

php 使用COOKIE制作浏览记录

文件1 cookieHistory.class.php<?php/***使用COOKIE制作网站浏览记录*bythreemore*/classHistoryCookie{var$times="";//记录COOKIE保存时间var$cookiename='History_cookie';//COOKIE名称var$counts=5;function__construct($name="",$times='',$counts){if(!empty($times))$this->times=time()+$times;if(!empty($name))$this->cookiename=$name;if(!empty($counts))$this->counts=$counts;}//保存记录到COOKIE中publicfunctiongetData($data){$historydate=array();$historydate[]=$data;//unset($_COOKIE[$this->cookiename]);if(isset($_COOK...

linux 怎么用 名字 代替 ip ?

 比如ssh1.1.1.1变成sshusr1 在每台机子的/etc/hosts文件中添加ip与名字的对应表...

phpnow 安装memcached

安装步骤:1.解压memcached.exe到任意目录,这里我解压到(E:WorkingPHPnowmemcached)PHPnow安装目录下面。在CMD命令下运行:"E:WorkingPHPnowmemcachedmemcached.exe-dinstall"安装为系统服务。2.继续CMD下执行:"E:WorkingPHPnowmemcachedmemcached.exe-dstart"启动服务。3.解压得到php_memcache.dll,将其复制到PHP的扩展目录(E:WorkingPHPnowphp-5.2.14-Win32ext)4.在php-apache2handler.ini中加入一行'extension=php_memcache.dll'5.重启apache,成功的话可以在phpinfo()中看到相关信息。Memcached的基本设置:-p 监听的端口-l 连接的IP地址, 默认是本机-d start 启动memcached服务-d restart 重起memcached服务-d stop|...

php 模拟抓去页面一些函数整理

curl模拟提交post数据/*$url@提交地址$postData例$postData=array('key'=>'value',);*/functioncurlPost($url,$postData=array()){if(empty($url))returnfalse;$o="";foreach($postDataas$k=>$v){$o.="$k=".urlencode($v)."&";}$postData=substr($o,0,-1);$ch=curl_init();$timeout=5;curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_POSTFIELDS,$postData);...

php时间友好输出(源自thinkphp的函数)

/***友好的时间显示**@paramint$sTime待显示的时间*@paramstring$type类型.normal|mohu|full|ymd|other*@paramstring$alt已失效*@returnstring*/functionfriendlyDate($sTime,$type='normal',$alt='false'){if(!$sTime)return'';//sTime=源时间,cTime=当前时间,dTime=时间差$cTime=time();$dTime=$cTime-$sTime;$dDay=intval(date("z",$cTime))-intval(date("z",$sTime));//$dDay=intval($dTime/3600/24);$dYear=intval(date("Y",$cTime))-intval(date("Y",$sTime));//normal:n秒前,n分钟前,n小时前,日期if($type=='normal'){if($dTime<60){if($dTime<10){return'刚刚';//byy...

php 正则抓去页面函数整理

整理了下抓取页面的一些函数 方便以后使用  //抓取页面functiongetcontents($url){$ch=curl_init();$timeout=5;curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$contents=curl_exec($ch);return$contents;}//抓取tablefunctionget_td_array($table){//去掉HTML标记属性$table=preg_replace("'<table[^>]*?>'si","",$table);$table=preg_replace("'<tr[^>]*?>'si","",$table);$table=preg_replace("'<td[^>]*?>'si","",$table);$table=str_re...

centos 支持ThinkPHP的pathinfo 配置

找到nginx下面的nginx.conf文件一般都是在#vim/usr/local/nginx/conf/nginx.conf   找到此处如果存在pathinfo.conf则将include pathinfo.conf; 前面的#删除如果没有则添加location~[^/].php(/|$){#commenttry_files$uri=404;toenablepathinfotry_files$uri=404;fastcgi_passunix:/tmp/php-cgi.sock;fastcgi_indexindex.php;includefastcgi.conf;includepathinfo.conf;}  pathinfo.conf内容#vim/usr/local/nginx/conf/pathinfo.confset$path_info"";set$real_script_name$fastcgi_script_name;if($fastcgi_script_name~"^(.+?.php)(/.+)$"){set$real_script_name...
首页上一页...617618619620621...下一页尾页