创建线程可以使用threading模块中的Thread子类;

其中Thread子类允许的参数如下:

(self, group=None, target=None, name=None, args=(), kwargs=None, *,daemon=None)

这个构造方法中,所有参数都是可选参数,即可以使用,也可以忽略。其中各个参数的含义如下:

group:指定所创建的线程隶属于哪个线程组(此参数尚未实现,无需调用);

target:指定所创建的线程要调度的目标方法(最常用);

args:以元组的方式,为 target 指定的方法传递参数;

kwargs:以字典的方式,为 target 指定的方法传递参数;

daemon:指定所创建的线程是否为后代线程。

这里主要记住三个参数(或者说两个),一个是target,另外是 args和 kwargs中的一个或者两个;

这里以args方式做个举例:

from threading import Thread

td02 = Thread(target=self.GitlabInfoget_local,args=(IP,Token))
#当设置为setDaemon(False)时(默认为False)。主线程需要等待子线程的结束才能结束;当设置为setDaemon(True)时,该线程为守护线程,主线程结束时,子线程会随之被回收。
td02.setDaemon(1)
td02.start()

注意这里,使用了args,以元组的方式传递参数;这是正确传递参数的方式。

那么如果错误传参会怎么样呢?(亲测,有卡死风险,原因是线程启动前目标函数就已经启动了,在目标函数结束前都不会正常响应)

td02 = Thread(target=self.GitlabInfoget_local(IP,Token)) 

#注意这里的传参方式,是在调用目标函数的时候,就直接给了参数,这会导致目标函数会立即启动,而不会等待线程拉起后再执行;

td02.setDaemon(1)
td02.start()

python创建线程传参误区记录的更多相关文章

  1. python 线程创建和传参(28)

    在以前的文章中虽然我们没有介绍过线程这个概念,但是实际上前面所有代码都是线程,只不过是单线程,代码由上而下依次执行或者进入main函数执行,这样的单线程也称为主线程. 有了单线程的话,什么又是多线程? ...

  2. C#基础知识回顾--线程传参

    C#基础知识回顾--线程传参 在不传递参数情况下,一般大家都使用ThreadStart代理来连接执行函数,ThreadStart委托接收的函数不能有参数, 也不能有返回值.如果希望传递参数给执行函数, ...

  3. c++11中关于`std::thread`线程传参的思考

    关于std::thread线程传参的思考 最重要要记住的一点是:参数要拷贝到线程独立内存中,不管是普通类型.还是引用类型. 对于传递参数是引用类型,需要注意: 1.当指向动态变量的指针(char *) ...

  4. Python中的传参是传值还是传址?

    传值:在C++中,传值就是把一个参数的值给这个函数,其中的更改不会影响原来的值. 传址:即传引用,直接把这个参数的内存地址传递进去,直接去这个内存地址上进行修改. 但是这些在Python中都没有,Py ...

  5. python 2 控制台传参,解包,编码问题初探

    python 2 控制台传参,需要从sys模块中导入argv,argv返回的第一个参数当前脚本(script)的文件名,后面是参数,参数个数必须和解包(unpack)时使用的参数个数一致 1.本例子演 ...

  6. java 线程传参 方式

    第一类:主动向线程传参   public class ThreadTest extends Thread { public ThreadTest() { } /** * 第一种通过构造方法来传递参数 ...

  7. Python菜鸟之传参

    Python菜鸟之传参 : 看上面enroll( )函数的调用传参 enroll("twiggy","M",city="上海", age=2 ...

  8. C# 线程传参

    传参方式有两种: 1.创建带参构造方法类 传参 2.利用Thread.start(8)直接传参,该方法会接收一个对象,并将该对象传递给线程,因此在线程中启动的方法 必须接收object类型的单个参数. ...

  9. 初识python 函数(定义,传参,返回值)

    python基础(二): 菜鸟教程基础知识讲解的非常全面,内容选择我认为的重点输出一遍 函数: 定义一个函数: 你可以定义一个由自己想要功能的函数,以下是简单的规则: def fun(arg): pa ...

  10. Python创建线程

    Python 提供了 _thread 和 threading 两个模块来支持多线程,其中 _thread 提供低级别的.原始的线程支持,以及一个简单的锁,正如它的名字所暗示的,一般编程不建议使用 th ...

随机推荐

  1. 【2020NOI.AC省选模拟#7】A. t1

    题目链接 原题解: 由于$+$满足幂等性,我们可以设$f_{i,j}$为从$i$号点向根$2^j$个点的权值之和,并且倍增计算出$f$.在查询是,可以像ST表一样用至多四个$f$中的路径拼出询问路径. ...

  2. 链表与malloc的疑惑

    1.奇怪点:如果我只是需要一个结点的空间为什么malloc的转换形式写成--Node=(int *)malloc(sizeof(int)) 自我解答:void *malloc(unsigned int ...

  3. flume 拦截器

    目的:功能1:判断json文件,如何格式合格则正常传输,否则就不传输 功能2:判断出合格的json文件,并且key值中包含"date"才进行传输 一.创建一个Json的工具类 pa ...

  4. python中的字典数据读取

    ①字典中嵌套字典 res1={'content': {'age': '47岁', 'ageOne': 47, 'ageOneUnit': '1', 'ageTwo': '8', 'ageTwoUnit ...

  5. 项目实训DAY 11-12 学习

    在神经网络可视化工具中,选择了三种,NNSVG,PlotNeuralNet,GraphCore 前两者应该比较好实现,例子都跑通了,对于定制的代码读起来也不难.PNN的示例图如下 最后一个虽然有实例图 ...

  6. ssh 修改端口号 --centos 7

    1 vim /etc/ssh/sshd_config Port   XXXXX #XXXXX 为要修改的端口号,默认是22,直接在新的行添加Port   XXXXX即可. 2 systemctl re ...

  7. 浙大版《C语言程序设计(第3版)》题目集 练习3-3 统计学生平均成绩与及格人数 (15 分)

    练习3-3 统计学生平均成绩与及格人数 (15 分) 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数.题目保证输入与输出均在整型范围内. 输入格式: 输入在第一行中给出非 ...

  8. js 导出excle文件(多页)

      --前提:页面生成相应的表格数据    例如: <table id="a"> <tr> <th></th> </tr> ...

  9. setter注入--简单类型

    UserDaoImpl中的代码,实现对name和age的注入 private String name; private int age; public void setName(String name ...

  10. 互联网架构 之备份服务器 rsync

    备份服务器(Rsync) 1.介绍备份的场景 1.什么情况下需要备份 一般数据比较重要的情况下,数据如果丢失很容易找不回来了的,建议备份. 2.什么是备份 将原有的数据复制一份或几份存起来,以备不时之 ...