- 浏览: 2662547 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
我有一个需求,通过多线程测试python memcached的性能:
class TestThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): while True: print mc.get('test') for i in xrange(8): t = TestThread() t.start()
但是坑爹的是,怎么优雅的让他停止呢?我实现了一个Executor
# -*- coding: utf-8 -*- import re import urllib2 import json import threading import Queue import os import time from time import sleep from threading import Lock from signal import signal,SIGTERM,SIGINT,SIGQUIT class Executor: def __init__(self,size): self.queue = Queue.Queue() self.tasks = [] self.running = True for i in range(size): t = Task(self.queue) t.setDaemon(True) t.start() self.tasks.append(t) self._signal() def _signal(self): signal(SIGTERM,self._exit) signal(SIGINT,self._exit) signal(SIGQUIT,self._exit) def _exit(self,a=None,b=None): print '_exit' self.cancel() def cancel(self): for task in self.tasks: while not task.cancel(): #print 'try again %s' %task.getName() #sleep(0.1) pass self.running = False self.onCancel() def submit(self,call): self.queue.put(call) def join(self): #self.queue.join() queue.join()会阻塞,所以不用 while self.running and not self.queue.empty(): sleep(0.1) if self.hasattr('cancelTrigger') and self.cancelTrigger(): self.cancel() def setCancelTrigger(self,cancelTrigger): self.cancelTrigger = cancelTrigger def setOnCancel(self,onCancel): self.onCancel = onCancel #print self.onCancel class Task(threading.Thread): def __init__(self,queue): threading.Thread.__init__(self) self.queue = queue self.running = True self.canceled = False def cancel(self): #self.canceled=True self.running=False return self.isCanceled() def isCanceled(self): return self.running==False def run(self): while self.running: call = self.queue.get() call.run() self.queue.task_done() if self.canceled: self.running = False
如何使用:
class Checker(): def run(self): print mc.get('test') executor = Executor(10) for x in xrange(100): executor.submit(Checker()) executor.join()
发表评论
-
python读取图片exif信息
2014-11-06 10:53 2406f = open("/home/admin/tlo ... -
Python程序的执行原理
2014-04-14 15:44 17321. 过程概述 Python先把代码(.py文件)编译成字 ... -
如何创建一个短链服务
2013-12-26 16:23 0参考: http://stackoverflow.com ... -
python 解析命令参数(argument)组件argparse
2013-12-11 17:35 1410参考: http://youngsterxyf.githu ... -
pyhon命令行工具optparse
2013-11-10 16:27 1045使用python optparse 可以创建命令行工具,下面 ... -
Python在豆瓣的应用
2013-10-21 10:46 1199Python在豆瓣的应用,hongqiangning分享 ... -
用python爬虫抓站的一些技巧总结
2013-10-10 14:12 1685学用python也有3个多月了,用得最多的还是各类爬虫 ... -
python小技巧
2013-10-10 11:50 7481. 声明长度256的数组 a=[0]*256 ... -
使用tesseract-ocr破解网站验证码
2013-10-09 10:25 1214原文:使用tesseract-ocr破解网站验证码 ... -
和豆瓣CMGS交流
2013-06-20 17:36 5849蒋云鹏: 在?CMGS: 在蒋 ... -
python乱码问题('ascii' codec can't encode character u'\u4e2d' in position 0)
2013-05-20 19:03 4257>>> k = u'中' >> ... -
python shell 交互模式
2013-04-28 22:17 1641python 通过code模块可以很容易的进入交互模式: ... -
jython和gunicorn性能测试对比
2013-04-13 13:03 1312helloworld,笔记本上: gunicorn ... -
python的mysql客户端-MySQLdb
2013-04-04 10:13 1175平时的主要编程语言是Java,开发时也主要用Mysql,经常 ... -
Python几种并发实现方案的性能比较
2013-03-18 21:14 2969原文:http://www.elias.cn/P ... -
python汉字和Unicode码(utf-8)之间的转换(Pack/Unpack)
2013-03-18 21:13 1654保证你要转换的字符串编码为UTF8,如果不是,请iconv ... -
python反序列化的坑
2013-01-06 18:06 1285今天遇到python一个坑,调用memcached的get_m ... -
sqlalchemy connection pool.py 源代码
2012-12-29 22:58 2252把 sqlalchemy pool源代码copy下来,有空看看 ... -
SQLAlchemy简单介绍
2012-12-28 22:41 0文档参考:http://docs.sqlalchemy.org ... -
pymysql简单使用
2012-12-28 12:38 2125import pymysql conn = pymysq ...
相关推荐
4. **主程序**:在主程序中创建了一个线程池,并持续向任务队列中添加任务,直到收到中断信号。 #### 六、注意事项 1. **线程同步问题**:使用互斥锁和信号量来确保线程间的同步,避免数据竞争和死锁等问题。 2. **...
Python线程池是一种多线程处理形式,它允许程序员创建一组预先启动的线程,然后将任务添加到队列中,由这些线程去...在Python中,标准库`concurrent.futures`提供了一个更高级的线程池API,可以方便地处理这些问题。
在Java、C#、Python等编程语言中,都有内置或第三方库支持线程池的实现。本篇文章将深入探讨如何使用线程池机制来下载文件,以及其背后的技术原理。 首先,线程池的概念源于操作系统中的进程与线程管理。线程池是由...
本篇文章将深入探讨如何使用Python实现TCP自动重连,并给出一个简单的示例代码。 首先,我们需要理解TCP连接的基本流程。TCP连接的建立通常涉及三次握手,而断开连接则需要四次挥手。在客户端,当连接因任何原因...
然后,创建一个线程池,为每个线程分配下载任务,每个任务负责下载文件的一个部分。线程会使用`requests.get()`方法,设置适当的`Range`头,获取并保存相应部分的数据。在整个过程中,我们需要维护一个状态记录,...
`Python thread container (class)` 提供了一个高效且灵活的线程管理类,它允许我们控制线程的数量并能够通过键盘中断(如按下Ctrl+C)来终止运行中的线程。在这个场景中,我们将深入探讨这个类的实现、使用方法以及...
通过以上策略,我们可以构建一个高效、可靠的Python多线程下载管理系统,充分利用系统资源,提高下载效率,为用户提供更好的体验。在实际应用中,还应考虑其他因素,如错误重试、网络连接恢复等,以增加程序的健壮性...
多线程是Python中的一个重要概念,尤其在处理并发任务时显得尤为重要。在Python中,多线程允许程序同时执行多个任务,提高了程序的执行效率。下面将详细讨论Python的多线程以及相关的知识点。 1. **线程基础** - *...
gevent是一个基于greenlet的Python并发库,它使用轻量级协程(greenlet)来实现异步I/O。Greenlet类似于Python的线程,但它们的切换更为轻便,不会涉及到全局解释器锁(GIL),因此在处理I/O密集型任务时表现优秀。...
在本Python自学教程中,我们将深入探讨如何构建一个支持多人连接的TCP服务器程序。TCP(传输控制协议)是网络通信中的一个基础协议,它确保了数据的可靠传输,通过建立面向连接的会话来保障数据的顺序和无丢失性。在...
该Python脚本是一个用于检测Google IP可用性的工具,主要针对Google App Engine (GAE) 服务和搜索服务。脚本需要Python 3.4或更高版本,并使用了多个Python库来实现其功能。以下是该脚本涉及的关键知识点: 1. **...
- **全局解释器锁(GIL)**:Python的全局解释器锁限制了任何时刻只有一个线程执行Python字节码,这使得多线程Python程序在CPU密集型任务上表现不佳。 - **避免数据竞争**:当多个线程同时修改同一数据时可能出现...
`MySQLdb`是Python的一个库,用于与MySQL数据库交互,它提供了连接、查询、事务处理等基本功能。 在描述中提到的“不停更新数据还要查询更新状态”,这可能涉及到事务的使用。在多线程环境中,为了确保数据的一致性...
首先,代码定义了一个名为`thread`的函数,它接受一个URL作为参数。在这个函数里,首先通过`requests.get()`方法向服务器发起请求,获取视频资源。`stream=True`参数确保数据不会立即被加载到内存中,而是按需读取。...
"Python库 | oslo.service-1.14.0.tar.gz" 是一个专注于为OpenStack项目提供服务基础架构的Python库,版本号为1.14.0。这个库是OpenStack生态系统的重要组成部分,它提供了创建服务进程和服务守护程序的基础工具,...
首先,Socket是网络通信中的一个抽象概念,它代表了一个端点,用于在两个网络应用程序之间提供双向数据传输。在TCP/IP协议栈中,Socket分为两种类型:TCP Socket(面向连接)和UDP Socket(无连接)。这个聊天室项目...
在实现HTTP多线程下载时,我们可以将一个大文件分成多个部分,每个部分在一个单独的线程中下载,然后将这些部分合并成原始文件。这样可以显著提高下载速度,因为多个线程可以同时从服务器获取数据。 FTP协议则是一...
在编程领域,交通信号灯实现程序通常涉及到模拟真实世界中的交通信号灯系统,这是一个典型的并发控制问题,常常用于教学和实践多线程或异步编程。在这个程序中,我们需要关注红、黄、绿三种颜色的灯如何按照既定规则...
在本示例中,我们有一个客户端服务器端聊天程序,该程序利用了Socket通信来实现用户之间的实时对话。这个程序在工程导入后可以直接运行,并且界面设计得相当美观,为用户提供良好的交互体验。 首先,我们需要了解...
一个线程中的异常可能会中断整个程序,除非有适当的处理机制,如使用`try-catch-finally`块。 **线程状态** 线程有多种状态,如新建、可运行、运行、等待、阻塞和死亡。理解这些状态有助于调试和优化多线程程序。 ...