- 博客(8)
- 资源 (13)
- 问答 (2)
- 收藏
- 关注
原创 Python自学成才之路 分布式计算解决方案actor
以下内容来自于cookbook,个人觉得这篇文章对于设计分布式计算任务有一定的借鉴意义,感兴趣的同学可以阅读原文:https://python3-cookbook.readthedocs.io/zh_CN/latest/c12/p10_defining_an_actor_task.htmlactor模式是一种最古老的也是最简单的并行和分布式计算解决方案。一个actor就是一个并发执行的任务,只是简单的执行发送给它的消息任务。actor之间的通信是单向和异步的。因此,消息发送者不知道消息是什么时候被发送,
2020-09-08 22:53:53 686
原创 python自学成才之路 死锁的解决方案
以下内容是我阅读cookbook上的死锁解决方案的读后感,感觉上面的思想很不错,想给大家分享下,我在其中加了一些我自己的理解,感兴趣的话可以阅读原文:https://python3-cookbook.readthedocs.io/zh_CN/latest/c12/p05_locking_with_deadlock_avoidance.html#id3关于死锁有一个经典的问题,”哲学家就餐问题“,题目是这样的:五位哲学家围坐在一张桌子前,每个人 面前有一碗饭和一只筷子。在这里每个哲学家可以看做是一个独立的
2020-09-07 22:04:34 712
原创 python自学成才之路 线程间协作之Semaphore,threading.local()
信号量信号量用来控制线程并发数的,信号量里面维护了一个计数器,这个计数器可以理解为锁的数量,线程通过acquire方法去申请锁,每申请到一个锁,计数器就减1。线程通过release释放锁,每释放一个锁,计数器就加1。当计数器为0的时候,通过acquire方法去申请锁会被阻塞,直到有其它的线程释放锁让计数器不为0才有可能申请到锁。信号量有两种BoundedSemaphore或Semaphore,用Semaphore举个栗子:import threading, timeclass myThread
2020-09-06 11:50:50 438
原创 Python自学成才之路 线程间协作 lock,condition,event的使用
多线程并发时会出现线程安全问题,如果不解决线程并发安全问题可能会让程序出现不可预料的情况。python提供了一些工具包来解决多线程安全问题,下面介绍其中常见的工具。1.Threading.Lock()锁的作用是将一段操作管理起来,确保每个时刻只有一个线程可以执行这段操作,这样就能确保里面的共享变量在并发的情况下对它的操作不会出现预期之外的一次。比如有多个售票窗口,如果不对售票操作加锁,就会导致出售的门票数大于可售的门票数。lock常用方法:lock.acquire:获取锁,锁被其它线程持有时会被阻塞
2020-09-05 23:32:49 548
原创 Python自学成才之路 多线程开发
1.创建线程Python中提供了threading模块来创建线程,创建方式有两种。1)直接通过threading.Thread来创建import threadingdef singing(): print(threading.currentThread().name + " - 正在唱歌 ")def dancing(): print(threading.currentThread().name + " - 正在跳舞 ")if __name__ == '__main
2020-09-05 00:08:47 313
原创 Python自学成才之路 进程间通信
程序在创建子进程时,会完全复制一份主进程的环境,包括变量,函数,类等。所以在子进程中使用的变量,函数,类和主进程之间隔离的,子进程之间也是隔离的。看下面这个案例:from multiprocessing import ProcessAGE = 1def hello(): print('hello')def greet(names): global AGE AGE += 1 names.append('jack') print('======子进程
2020-09-03 22:03:09 283
原创 Python自学成才之路 多进程开发
在python中可以通过os.fork()创建子进程,但是这种方式只能在linux,unix,mac下面使用,不能跨平台,所以一般不推荐使用这种方式。Python提供了一个multiprocessing模块来创建多进程,这种方式写起来更简单,且支持跨平台,一般推荐使用multiprocessing模块来创建多线程。1.使用Process来创建进程from multiprocessing import Processimport osdef pringLog(msg): print(msg
2020-09-02 23:17:26 278
原创 python自学成才之路 miniconda创建虚拟环境
前面虚拟环境是安装在一个Python解释器下的,如果想使用不同版本的Python环境该怎么创建呢?这个时候miniconda就派上用场了。Miniconda可以在创建虚拟环境时指定安装不同版本的Python解释器。Miniconda下载地址:https://docs.conda.io/en/latest/miniconda.html安装好miniconda后将scripts目录配置到环境变量中,就可以愉快的玩耍moniconda了。1.创建一个虚拟环境conda create -n envname
2020-09-01 22:19:05 1987 1
bashdb-4.2-0.8
2018-03-01
nagios-4.1.1.tar.gz centreon-2.5.4.tar.gz
2017-08-10
多文件内容拷贝到一个文件上(解决中文乱码) java实现
2015-05-08
C语言程序运行时出现的问题
2013-09-24
C语言程序运行时出现问题
2013-09-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人