多线程开发+多线程使用共享数据-17
Posted 午间小憩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程开发+多线程使用共享数据-17相关的知识,希望对你有一定的参考价值。
进程:运行着的程序
线程:每个进程里面至少包含一个线程,线程是操作系统创建的,用来控制代码执行的数据结构,线程就像代码的执行许可证
单线程程序,主线程的入口就是代码的开头
主线程顺序往下执行,直到所有的代码都执行完
CPU核心,在一个时间点上只能执行一个线程代码
调度:操作系统不会让一个线程一直占用CPU的
进程里的多线程:
线程库:代码通过系统调用,请求OS分配一个新的线程
python里面:thread、threading都可以用来创建和管理线程,thread比较底层,threading是thread模块的扩展,提供了很多线程同步功能,使用起来更加方便强大
多线程的概念
#coding = utf-8
print (‘main thread start.‘)
import threading
from time import sleep
def thread1_entry():
print (‘child thread 1,strat‘)
sleep(15)
print(‘child thread 1,end‘)
t1 = threading.Thread (target=thread1_entry) #实例化
t1.start() 创建新的线程,这时候才有两个线程;代码通过系统调用,请求OS分配一个新的线程,与原来的线程并行的执行一段代码
sleep(10)
print(‘main thread end.‘)
为什么需要多线程?
多线程给一个程序并行执行代码的能力
同时处理多个任务
$convert
>>convert 1.avi
>>convert 2.avi
常见的:UI线程、任务线程 task exeute
例子:主线程等待子线程结束
# coding=utf8
import threading
from time import sleep, ctime获取当前时间
def thread1_entry(nsec):
print(‘child thread 1, start at:‘, ctime())
sleep(nsec)
print(‘child thread 1, end at:‘, ctime())
def thread2_entry(nsec):
print(‘child thread 2, start at:‘, ctime())
sleep(nsec)
print(‘child thread 2, end at:‘, ctime())
if __name__==‘__main__‘:
print(‘main thread start.‘)
# 创建线程对象, 指定了新线程的入口函数
t1 = threading.Thread(target=thread1_entry, args=(1,))
t2 = threading.Thread(target=thread2_entry, args=(2,))
# 启动新线程
t1.start()
t2.start()
# 等t1 线程结束
t1.join()
# 等t2 线程结束
t2.join()
print(‘main thread end.‘)
以上是关于多线程开发+多线程使用共享数据-17的主要内容,如果未能解决你的问题,请参考以下文章