首页 > 编程语言 > 详细

Python多线程_笔记

时间:2020-03-29 15:54:04      阅读:55      评论:0      收藏:0      [点我收藏+]

基础知识:

‘‘‘
@Time : 2020/3/29 14:30
@Author : laolao
@FileName: 2.py
‘‘‘
import threading
def thread_job():
    print("This is an added Thread,number is %s" % threading.current_thread())
def main():

    #查看现在有几个线程被激活
    # [ < _MainThread(MainThread, started  17940) >]:默认的主程序的线程
    print(threading.active_count())
    # 查询被激活的线程都叫什么
    print(threading.enumerate())
    # 显示当前运行的程序是属于那个线程
    print(threading.current_thread())
    # 定义一个线程,括号里面写让线程执行的工作
    added_thread = threading.Thread(target=thread_job)
    added_thread.start() # 执行线程

if __name__ == ‘__main__‘:
    main()

多线程的应用:

‘‘‘
@Time : 2020/3/29 14:30
@Author : laolao
@FileName: 2.py
‘‘‘
import threading
import time

def thread_job():
    print(‘我是T1线程:T1 start‘)
    for i in range(10):
        time.sleep(0.1)
    print("我是T1线程:T1 finish")
def T2_job():
    print(‘我是T2线程:T2 start‘)
    print("我是T2线程:T2 finish")
def main():

    ‘‘‘
    target:让线程执行的工作
    name:为这个线程取的名字
    :return:
    ‘‘‘
    added_thread = threading.Thread(target=thread_job,name=‘T1‘)
    thread2 = threading.Thread(target=T2_job,name=‘T2‘)
    added_thread.start() # 执行线程
    thread2.start()
    print(‘我跟T1线程同步执行‘)
    # 如果希望自己的代码在线之后完成用join()
    thread2.join()
    print(‘我在T2线程执行后执行‘)
if __name__ == ‘__main__‘:
    main()

Queue功能:

‘‘‘
@Time : 2020/3/29 14:30
@Author : laolao
@FileName: 2.py
‘‘‘
import threading
import time
from queue import Queue

def job(l,q):
    for i in range(len(l)):
        l[i]=l[i]**2
    q.put(l)
def multithreading():
    q = Queue()
    threads = [] # 线程列表
    data = [[1,2,3],[3,4,5],[4,4,4],[5,5,5]]
    for i in range(4):
        ‘‘‘
        定义4个线程,并用列表保存起来
        ‘‘‘
        t  = threading.Thread(target=job,args=(data[i],q))
        t.start()
        threads.append(t)
    for thread in threads:
        ‘‘‘
        把每一线程都一次加载到主线程中
        ‘‘‘
        thread.join()
    result=[]
    for _ in range(4):
        result.append(q.get())
    print(result)

if __name__ == ‘__main__‘:
    multithreading()

lock:

‘‘‘
@Time : 2020/3/29 14:30
@Author : laolao
@FileName: 2.py
‘‘‘
import threading
import time
from queue import Queue

def job1():
    global A
    lock.acquire()
    for i in range(10):
        A+=1
        print(‘job2‘,A)
    lock.release()
def job2():
    global A
    lock.acquire() # 设定锁
    ‘‘‘
    锁上后job1就不会接触到这一段
    ‘‘‘
    for i in range(10):
        A+=10
        print(‘job2‘,A)
    lock.release() # 释放锁
if __name__ == ‘__main__‘:
    A=0
    lock = threading.Lock()
    t1 = threading.Thread(target=job1)
    t2 = threading.Thread(target=job2)
    t1.start()
    t2.start()
    t1.join()
    t2.join()

  

Python多线程_笔记

原文:https://www.cnblogs.com/chrysanthemum/p/12592648.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!