首页 > 其他分享 >多线程

多线程

时间:2023-07-24 15:00:11浏览次数:37  
标签:ctime sleep time print 线程 多线程 target

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":"吃火锅"})

标签:ctime,sleep,time,print,线程,多线程,target
From: https://www.cnblogs.com/djl-0628/p/17577258.html

相关文章

  • 为什么多线程下会有线程安全问题
    原子性:加锁(乐观锁CAS、悲观锁)原子性是指一个操作或一系列操作要么全部执行成功并且不被中断,要么完全不执行,没有中间状态。在多线程或并发环境下,如果一个操作是原子性的,那么其他线程不会在该操作执行过程中看到该操作的部分结果。原子性是为了保证操作的一致性和正确性。例如,一个......
  • Java多线程详解——一篇文章搞懂Java多线程
    Java多线程详解——一篇文章搞懂Java多线程目录1.基本概念2.线程的创建和启动2.1.多线程实现的原理2.2.多线程的创建,方式一:继承于Thread类2.3.多线程的创建,方式一:创建Thread匿名子类(也属于方法一)2.4.多线程的创建,方式二:实现Runnable接口2.4.1.比较创建线程的两种......
  • JavaScript多线程
    JavaScript多线程实现流程1.基本概念在开始讲解JavaScript多线程之前,我们需要先了解一些基本概念。单线程:JavaScript是一门单线程语言,即每次只能执行一项任务。这是因为JavaScript的设计初衷是用于前端交互和操作DOM,多线程会带来复杂性和安全性问题。多线程:多线程指的是同时......
  • java多线程
    java中多线程的实现其实和c++类似,介绍几种常用方法1.继承Thread类,重写其run方法classMyThreadextendsThread{publicMyThread(){}publicMyThread(Stringname){super(name);}@Overridepublicvoidrun(){System.out.p......
  • Linux 网络基础 2 三次握手 三次挥手 多进程 多线程服务器
    1.包裹函数对服务器客户端等函数进行报错处理以及简化处理比如bindinttcp4bind(shortport,constchar*IP){structsockaddr_inserv_addr;intlfd=Socket(AF_INET,SOCK_STREAM,0);bzero(&serv_addr,sizeof(serv_addr));if(IP==NULL){//......
  • 多线程下,C++如何调用Python脚本的方法
    视频教程:多线程场景下,用C++调用Python脚本的方法Git:https://github.com/JasonLiThirty/C-andPython接口函数Python3.6提供给C/C++接口函数,基本都是定义pylifecycle.h,pythonrun.h,ceval.h中。Py_Initialize()和Py_Finalize()C++应用程序调用Python脚本之前,必须先调用Py_I......
  • (转)GUI为什么不设计为多线程
    在我们这批新人转正评审的时候,我师父问了我的小伙伴一个问题:为什么一些更新界面的方法只能在主线程中调用?师父没有问我这个问题,让知其然但不知其所以然的我有种侥幸逃过一难的心情。我想如果回答那是因为Android GUI库是单线程消息机制的,更新界面的操作必须放到主线程中执行,那师父......
  • iOS 多线程自己的理解
    .创建线程的平均开销:内存堆栈:主线程——1M,子线程——512K时间:基本可以忽略不计a.不可改变的对象,通常是线程安全的b.主线程负责处理响应事件线程安全的类和函数:NSArray,NSData,NSNumber.....非线程安全:NSBundle,NSCoder,NSArchiver......
  • 实验五 Java多线程程序设计实验总结
    Java多线程程序设计实验总结引言多线程是计算机科学中重要的概念,它允许同时执行多个任务,从而提高程序的效率和性能。在Java中,多线程被广泛应用于各种场景,例如并发编程、网络编程等。本文将通过实验五的实践经验,介绍Java多线程程序设计的基本原理和常用技巧,并提供代码示例以加深......
  • labwindows 多线程
    https://www.ni.com/zh-cn/support/documentation/supplemental/06/multithreading-in-labwindows--cvi.htmlhttps://forums.ni.com/t5/LabWindows-CVI/DiscardAsyncTimer-returning-before-timer-callback-is-complete/td-p/3943460......