Hugh's Blog

Python 简单实现多线程任务队列

使用队列实现一个简单的多线程任务。 from queue import Queue from threading import Thread class TaskQueue(Queue): def __init__(self, num_workers=1): Queue.__init__(self) self.num_workers = num_workers self.start_workers() def start_workers(self): for _ in range(self.num_workers): t = Thread(target=self.do_task) t.daemon = True t.start() def add_task(self, func, *args, **kwargs): args = args or () kwargs = kwargs or {} self.put((func, args, kwargs)) def do_task(self): while True: ...

 

控制 Goroutine 的并发数量

在 Go 中创建协程的成本很低,为了避免造成资源的浪费,有必要限制协程的数量,下面是一个简单的实现。 package main import ( "fmt" "sync" "time" ) var wg = sync.WaitGroup{} var jobs = make(chan int, 2) func main() { // 设 ...

 

Python 连接池简单实现

使用队列实现一个简单的连接池。 from queue import Queue class Client(object): def query(self, sql:str): return ['ok'] def disconnect(self): pass class MyClient(object): def __init__(self): self.pool = None self._client = Client() def query(self, sql:str): try: data = self._client.query(sql) except: data = [] if self.pool is not None: self.pool.free(self) return data def disconnect(self): self._client.disconnect() class MyClientPool(object): def __init__(self, max_conns=5, max_timeout=5): self.max_conns = max_conns ...

 

虚拟机下无法访问宿主机

开发环境一直都是 Hyper-V 下虚拟机,但是最近不知道为什么,虚拟机无法访问宿主机,如虚拟机 IP 段为 237,在虚拟机内无法访问 128 或者 137 等 IP 段。 最后发现是某 ...

 

PHP 转换编码带 BOM 的问题

PHP 在转换文件编码时,如果遇到带有 BOM 头的话,会导致其他应用读取到的内容出现乱码,需要做单独的处理。 $content = file_get_contents('in.txt'); $encode = mb_detect_encoding($content, ['ASCII', 'GBK', 'GB2312', 'BIG5', 'UTF-8']); if ($encode !== 'UTF-8') { $content = iconv($encode, 'UTF-8', $content); } ...

 
<< Newer Posts Older Posts >>