python 函数参数多个逗号不报错_python笔记7-多线程threading之函数式

前言

1.python环境2.7

2.threading模块系统自带

单线程

1.平常写的代码都是按顺序挨个执行的,就好比吃火锅和哼小曲这两个行为事件,定义成两个函数,执行的时候,是先吃火锅再哼小曲,这种就是单线程的行为。

#coding:utf-8

importtimedefchi():print("%s 吃火锅开始:" %time.ctime())

time.sleep(1)print("%s 吃火锅结束--" %time.ctime())defheng():print("%s 哼着小曲开始:" %time.ctime())

time.sleep(1)print("%s 哼着小曲结束--" %time.ctime())if __name__ == "__main__":

chi()

heng()

Thu Jan11 16:32:37 2018吃火锅开始:

Thu Jan11 16:32:38 2018 吃火锅结束--Thu Jan11 16:32:38 2018哼着小曲开始:

Thu Jan11 16:32:39 2018 哼着小曲结束--

2.生活中我们是可以一边吃火锅一边哼小曲的,那么代码里面如何实现这种同时进行的不同事件呢?这就是接下来要讲的python多线程

多线程threading

1.Python通过两个标准库thread和threading提供对线程的支持。thread提供了低级别的、原始的线程以及一个简单的锁.Threading模块封装了一些常用的方法,初学者直接学这个模块就行了。

2.Python中使用线程有两种方式:函数或者用类来包装线程对象

3.threading.Thread里面几个参数介绍:

class Thread(_Verbose)

__init__(self, group=None, target=None, name=None, args=(), kwargs=None, verbose=None)

*group*:group参数必须为空,参数group是预留的,用于将来扩展;

参数args和kwargs分别表示调用target时的参数列表和关键字参数。

*target*: 参数target是一个可调用对象(也称为活动[activity]),在线程启动后执行

*name*: 参数name是线程的名字。默认值为“Thread-N“,N是一个数字。

*args*:传递给线程函数target的参数,他必须是个tuple类型.

*kwargs*:kwargs表示关键字参数。字典类型 {}.

函数式

1.先看个简单案例,这种是执行函数,函数不带参数的

#coding:utf-8

importthreadingimporttimedefchi():print("%s 吃着火锅开始:" %time.ctime())

time.sleep(1)print("%s 吃着火锅:涮羊肉" %time.ctime())

time.sleep(1)print("%s 吃着火锅:涮牛肉" %time.ctime())

time.sleep(1)print("%s 吃着火锅:贡丸" %time.ctime())

time.sleep(1)print("%s 吃火锅结束!" %time.ctime())defting():print("%s 哼着小曲1!" %time.ctime())

time.sleep(2)print("%s 哼着小曲2!" %time.ctime())

time.sleep(2)print("%s 哼着小曲3!" %time.ctime())

time.sleep(2)print("%s 哼着小曲4!" %time.ctime())

time.sleep(2)print("%s 哼着小曲5!" %time.ctime())

time.sleep(2)#创建线程数组

threads =[]#创建线程t1,并添加到线程数组

t1 = threading.Thread(target=chi)

threads.append(t1)#创建线程t2,并添加到线程数组

t2 = threading.Thread(target=ting)

threads.append(t2)if __name__ == ‘__main__‘:#启动线程

for t inthreads:

t.start()

运行结果:

Thu Jan 11 16:35:50 2018 吃着火锅开始:

Thu Jan 11 16:35:50 2018 哼着小曲1!

Thu Jan 11 16:35:51 2018 吃着火锅:涮羊肉

Thu Jan 11 16:35:52 2018 哼着小曲2!Thu Jan 11 16:35:52 2018 吃着火锅:涮牛肉

Thu Jan 11 16:35:53 2018 吃着火锅:贡丸

Thu Jan 11 16:35:54 2018 哼着小曲3!Thu Jan 11 16:35:54 2018 吃火锅结束!

Thu Jan 11 16:35:56 2018 哼着小曲4!

Thu Jan 11 16:35:58 2018 哼着小曲5!

2.带参数的用args传元组类型(参数最后多加一个逗号“,”要不然会报错)

#coding:utf-8

importthreadingimporttimedefchi(threadName,name):print("%s 吃着%s开始:" %(time.ctime(),threadName))print("%s 吃着火锅:涮羊肉" %time.ctime())

time.sleep(1)

time.sleep(1)print("%s 吃着火锅:涮牛肉" %time.ctime())

time.sleep(1)print("%s 吃着火锅:贡丸" %time.ctime())

time.sleep(1)print("%s 吃着%s结束--" %(time.ctime(),threadName))print("%s 运行结束!"%name)defting(threadName):print("%s 哼着%s1!" %(time.ctime(),threadName))

time.sleep(2)print("%s 哼着小曲2!" %time.ctime())

time.sleep(2)print("%s 哼着小曲3!" %time.ctime())

time.sleep(2)print("%s 哼着小曲4!" %time.ctime())

time.sleep(2)print("%s 哼着小曲5!" %time.ctime())

time.sleep(2)#创建线程数组

threads =[]#创建线程t1,并添加到线程数组#t1 = threading.Thread(target=chi, args=("火锅","吃火锅",))

#传kwargs参数

t1 = threading.Thread(target=chi, kwargs={"threadName":"火锅","name":"吃火锅"})

threads.append(t1)#创建线程t2,并添加到线程数组

t2 = threading.Thread(target=ting,args=("小曲",))

threads.append(t2)if __name__ == ‘__main__‘:#启动线程

for t inthreads:

t.start()

3.或者用kwargs传字典{}类型

# 创建线程t1,并添加到线程数组

# t1 = threading.Thread(target=chi, args=("火锅","吃火锅",))

# 传kwargs参数

t1 = threading.Thread(target=chi, kwargs={"threadName":"火锅","name":"吃火锅"})

封装类和方法的调用下篇介绍

原文:https://www.cnblogs.com/jason89/p/8998294.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值