前言

1.python环境3.6

2.threading模块系统自带

单线程

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

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

import threading

import time

def chi():

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())

def ting():

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 in threads:

t.start()

运行结果:

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

# coding:utf-8

import threading

import time

def chi(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)

def ting(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 in threads:

t.start()

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

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

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

# 传kwargs参数

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

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

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

  1. python返回变量类型_Python指定函数参数、返回值类型报错是咋了?

    Leetcode刷题给的默认函数格式是这样的: Class Solution: def coinChange(self, coins: List[int], amount: int) -> in ...

  2. python tk 当输入数值错误是报错_Python的异常处理

    一.Python标准异常总结 所谓异常就是运行期检测到的错误.计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行. Python标准异常 ...

  3. 实战讲解Python函数参数

    今天给大家分享一下自己整理的一篇 Python 参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上 80% 的文章讲的都要明白,如果你是入门不久的 python 新手,相信本篇文章 ...

  4. python函数参数*arg和**kwargs分别代表什么?

    python函数参数*arg和**kwargs分别代表什么? 注意: 注意:参数arg.*args.**kwargs三个参数的位置必须是一定的.必须是(arg,*args,**kwargs)这个顺序, ...

  5. [转载] python 函数参数类型检查

    参考链接: Python函数参数 在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里. 我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参 ...

  6. python函数参数定义不合法_下列哪种函式参数定义不合法?

    python 函数参数定义有四类: 1,必选参数:调用函数时候必须赋值的参数. a,须以正确的顺序传入函数 b,调用时的数量必须和声明时的一样 def exa(x): return x #b作为参数进 ...

  7. python 函数参数 (必选参数、默认参数、可选参数、关键字参数)

    默认参数增加 (x=None), if x: 能选择是否执行对x的操作 参考文章:python 函数参数(必选参数.默认参数.可选参数.关键字参数)

  8. Python函数参数学习

    Python函数参数笔记(简) --位置参数[必选参数] 指一般参数 --默认参数 指带一个默认值的参数 --可变参数(自动组装成一个tuple)     def calc(*num):        ...

  9. python函数参数类型及顺序_python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

最新文章

  1. 数据结构 - 有两个链表,第一个升序,第二个降序,合并为一个升序链表(C++)
  2. 识别不了socket未知的名称或服务
  3. 第四十五课:MVC,MVP,MVVM的区别
  4. Learn Python the Hard Way: while循环
  5. 采购订单收货后不能修改价格的增强
  6. sql server browser启动不了_机器人、无人机惊艳亮相!内江市2020年“119”消防宣传月活动正式启动...
  7. Linux 下监控系统几个重要组件
  8. 关于pygame和tkinter窗口的那件事-线程
  9. HDoj-1874-畅通project续-Dijkstra算法
  10. Tomcat中的零停机部署(和回滚); 演练和清单
  11. vs显示堆栈数据分析_什么是“数据分析堆栈”?
  12. java quartz 2.2.3_java – Spring 3 Quartz 2错误
  13. 【HUSTOJ】1048: 字符图形4-星号正三角
  14. 社招看这里: 高级开发工程师/技术专家 [组内直推]
  15. Intel SGX入门
  16. 51单片机点亮LED灯、流水灯
  17. C++ SuperLU 混合编程
  18. 为什么那么多公司都选择灵活用工?
  19. 联系书商出译著的流程
  20. 自动添加Opera搜索串

热门文章

  1. 法拉第未来FF91付费预订仅300台,国内关联公司存在失信
  2. 支付宝五福开奖!几个亿的项目你分到几块?
  3. 讯飞超脑2030计划开启 持续引领人工智能未来发展
  4. 假如啤酒只有七天生命
  5. 继爱奇艺之后,腾讯视频、优酷宣布:取消剧集超前点播服务
  6. 国家市场监管总局:低价倾销、大数据杀熟等价格违法行为将被罚
  7. 苹果WWDC2021终极剧透!新款Macbook Pro外观大改 iOS 15将发布
  8. 怪兽充电递交IPO招股书:2020年净利润7540万元 阿里为第一大股东
  9. 工信部通报侵害用户权益APP:腾讯应用宝、小米应用商店等在列
  10. 搜狗加入鹅厂,将成为腾讯间接全资子公司!