Python-线程的基本使用

# 线程类(继承threading.Thread并重写run方法):
class Produce(threading.Thread):
    def __init__(self):
        # 若子类重写了父类的__init__则一定要调用父类__init__正确继承父类变量和方法
        super().__init__()
        self.stat = "running"
    def run(self):
        print(self.stat)
        print("over run")

pro = Produce()
# start会自动执行run方法
pro.start()
# 等待主线程
pro.join()
# running
# over run

-------------------------------------------------------------

# 线程函数-多线程
# 第一个参数是线程函数变量,第二个参数args是一个元组参数,如果
# 只传递一个值,就只需要i, 如果需要传递多个参数,那么还可以继续传递
# 下去其他的参数,其中的逗号不能少,元组中只包含一个元素时,需要在
# 元素后面添加逗号。
import threading
import time
def worker(number):
    print “worker”
    time.sleep(number)

def multi_thread():
	for i in xrange(5):
    	t = threading.Thread(target=worker,args=(i,))
    	t.start()
    	t.join()

生产者与消费者

# 生产者生成随机数量个任务, 由消费者处理
# Queue的操作为原子操作, 自带锁
import threading, random
from queue import Queue
data_count = random.randint(1, 100)
task_que = Queue(data_count)
def Produce():
    print("Produce running")
    global task_que
    for i in range(data_count):
        print("生产数据资料中...")
        task_id = random.randint(1, 100)
        task_que.put(task_id)
        print("生成数据:", task_id)
    print("------------------ 生成数据量:%d --------------------"%(data_count))

def Spend():
    print("Spend running")
    over_task = 0
    global task_que
    while over_task != data_count:
        print("消耗数据资料中...")
        task_id = task_que.get()
        over_task += 1
        print("消耗数据:", task_id)
    print("------------------ 消耗数据量:%d --------------------"%(over_task))

produ_thr = threading.Thread(target=Produce)
spend_thr = threading.Thread(target=Spend)
spend_thr.start()
produ_thr.start()
spend_thr.join()
produ_thr.join()
print("over")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值