最近学习python并发,于是对多进程、多线程、异步和协程做了个总结。
一、多线程
多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行。即使是单CPU的计算机,也可以通过不停地在不同线程的指令间切换,从而造成多线程同时运行的效果。
多线程相当于一个并发(concunrrency)系统。并发系统一般同时执行多个任务。如果多个任务可以共享资源,特别是同时写入某个变量的时候,就需要解决同步的问题,比如多线程火车售票系统:两个指令,一个指令检查票是否卖完,另一个指令,多个窗口同时卖票,可能出现卖出不存在的票。
在并发情况下,指令执行的先后顺序由内核决定。同一个线程内部,指令按照先后顺序执行,但不同线程之间的指令很难说清除哪一个会先执行。因此要考虑多线程同步的问题。同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。
1、thread模块
2、threading模块
threading.Thread 创建一个线程。
给判断是否有余票和卖票,加上互斥锁,这样就不会造成一个线程刚判断没有余票,而另外一个线程就执行卖票操作。
#! /usr/bin/python
#-* coding: utf-8 -*
# __author__ ="tyomcat"
import threading
import time
import os
def booth(tid):
global i
global lock
while True:
lock.acquire()
if i!=0:
i=i-1
print "窗口:",tid,",剩余票数:",i
time.sleep(1)
else:
print "Thread_id",tid,"No more tickets"
os._exit(0)
lock.release()
time.sleep(1)
i = 100
lock=threading.Lock()
for k in range(10):

本文详细介绍了Python中的并发编程,包括多线程的概念、同步问题及threading模块,协程的实现方式如生成器、Stackless Python、greenlet和eventlet,多进程的subprocess和multiprocessing包,以及异步编程的事件驱动模型。通过实例和关键函数解析,帮助理解各种并发机制的工作原理。

2281

被折叠的 条评论
为什么被折叠?



