博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发编程——多线程
阅读量:5334 次
发布时间:2019-06-15

本文共 1788 字,大约阅读时间需要 5 分钟。

1.什么是线程

    进程:资源单位
    线程:执行单位
    注意:每一个进程中都会自带一个线程

2.为什么要有线程

    开一个进程:
        申请内存空间   耗时
        将代码拷贝到申请的内存空间中   耗时
    开线程:
        不需要申请内存空间

    开线程的开销远远小于开进程的开销!!!

3.如何使用线程

4 子线程的两种建立方式

# 方式1'''from threading import Threadimport timedef task(name):    print('%s is running' % name)    time.sleep(1)    print('%s is over')t = Thread(target=task, args=('king',))t.start()print('主')'''# 方式 2from threading import Threadimport timeclass MyThread(Thread):    def __init__(self,name):        super().__init__()        self.name = name    def run(self):        print('%s is run'%self.name)        time.sleep(3)        print('%s is over'%self.name)t = MyThread('king')t.start()print('主')
子线程建立方式

5、线程之间的数据共享

from threading import Threadx = 100def task():    global x    x =666    print(x)t = Thread(target=task)t.start()print(x)
数据共享

6、线程互斥锁

from threading import Thread,Lockimport timemutex = Lock()n = 100def task():    global n    mutex.acquire()    tmp = n    time.sleep(0.1)    n = tmp -1    mutex.release()t_list = []for i in range(100):    t = Thread(target=task)    t.start()    t_list.append(t)for t in t_list:    t.join()print(n)
互斥锁

7、线程的其他属性方法

from threading import Thread,active_count,current_threadimport osimport timedef task(name):    # print('%s is running'%name,os.getpid())    print('%s is running'%name,current_thread().name,current_thread().getName())    time.sleep(1)    print('%s is over'%name)def info(name):    print('%s is running' % name, current_thread().name, current_thread().getName())    time.sleep(1)    print('%s is over' % name)t = Thread(target=task,args=('关磊',))t1 = Thread(target=info,args=('关超',))t.start()t1.start()t.join()print(active_count())  # 当前存活的线程数print(os.getpid())print(current_thread().name)print(current_thread().getName())
线程其他属性方法

转载于:https://www.cnblogs.com/king-home/p/10826203.html

你可能感兴趣的文章
python标准库学习7
查看>>
有意思的代码片段
查看>>
德银:预计中国房地产行业在2018年面临“严重调整”
查看>>
jQuery选中元素与样式改变
查看>>
subline应用之python
查看>>
C8051开发环境
查看>>
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
255. Verify Preorder Sequence in Binary Search Tree
查看>>
01_1_准备ibatis环境
查看>>
java判断网页的编码格式
查看>>
NYOJ_58最少步数(queue+BFS)
查看>>
windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决
查看>>
[fowarding]Ubuntu jsp平台使用JDBC来连接MySQL数据库
查看>>
angular学习笔记---通过angular/cli建一个新的项目
查看>>
mysql desc esc 基本命令总结
查看>>
matlab命令文档【全】
查看>>
扎瓦男孩决定编写一个酒店管理系统
查看>>
poj2138 Travel Games
查看>>
Spark概述
查看>>
iray摘抄
查看>>