码迷,mamicode.com
首页 > 编程语言 > 详细

python线程,进程,队列和缓存

时间:2016-07-21 00:44:18      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

一、线程

 threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。

创建线程的两种方式
1.threading.Thread
import threading
def f1(arg):
    print(arg)

t = threading.Thread(target=f1,args=(123,))
#t.start代表这个线程已经准备就绪,等待cpu的调度。
t.start()
2.自定义,继承threading.Thread
class MyThread(threading.Thread):
    def __init__(self, func,args):
        self.func = func
        self.args = args
        super(MyThread, self).__init__()
    def run(self):
        self.func(self.args)
def f2(arg):
    print(arg)
t1 = MyThread(f2,1234)
t1.start()

二、线程锁

当多个线程同时修改同一条数据时可能会出现脏数据,所以,出现了线程锁 - 同一时刻允许一个线程执行操作。

##没使用锁
import threading
import time
NUM = 10
def f1():
    global NUM
    NUM -= 1
    time.sleep(2)
    print(NUM)
for i in range(10):
    t = threading.Thread(target=f1)
    t.start()

##使用锁
def f1(l):
    global NUM
    #上锁
    l.acquire()
    NUM -= 1
    time.sleep(2)
    print(NUM)
    #开锁
    l.release()
#创建锁,Rlock可以加多层锁
lock = threading.RLock()
for i in range(10):
    t = threading.Thread(target=f1,args=(lock,))
    t.start()

 

python线程,进程,队列和缓存

标签:

原文地址:http://www.cnblogs.com/Z-style/p/5690146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!