python_Threading 多线程

python Threading多线程
一、添加线程
import threading

def thread_job_1():    # 线程功能
	print("This is a added Thread, number is %s" % threading.current_thread())
    
def thread_job_2():
    print("This is a added Thread, number is %s" % threading.current_thread())
    
def main():
    added_thread_1 = threading.Thread(target=thread_job_1)    #添加线程并指明功能
    added_thread_2 = threading.Thread(target=thread_job_2)
    added_thread_1.start()    # 开启线程
    added_thread_2.start()
    print(threading.active_count())    # 查看有多少激活了的线程
    print(threading.enumerate())    # 查看激活的哪几个线程
    print(threading.current_thread())    # 查看正在运行的是哪个线程

if __name__ == "__main__":
	main()
二、join()功能
import threading
import time

def thread_job():
	print("T1 start\n")
    for i in range(10):
		time.sleep(0.1)
    print("T1 finish\n")

def T2_job():
	print("T2 start\n")
    print("T2 finish\n")

def main():
	added_thread = threading.Thread(target=thread_job, name="T1")
    thread_2 = threading.Thread(target=T2_job)
    added_thread.start()
    thread2.start()
    added_thread.join()    # 要等待added_thread运行完后再运行下面的语句
    # thread2.join()
    print("all done\n")

if __name__ == "__main__":
	main()
三、Queue功能
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], [5, 6, 7], [7, 8, 9]]
    for i in range(4):
		t = threading.Thread(target=job, args=(data[i], q))    # args传参
        t.start()
        threads.append(t)
    for thread in threads:
		thread.join()
    result = []
    for _ in range(4):
		result.append(q.get())    # 从q里按顺序拿出一个值
    print(result)
    
if __name__ == "__main__":
    multithreaing()        
四、锁lock
def job1():
    global A,lock    # 用lock把自己锁住,运行该功能时不受干扰
    lock.acquire()
    for i in range(10):
        A += 1
        print("job1", A)
    lock.release()

def job2():
    global A,lock
    lock.acquire()
    for i in range(10):
        A += 10
        print("job2", A)
    lock.release()

if __name__ == "__main__":
    lock = threading.Lock()
    A = 0
    t1 = threading.Thread(target=job1)
    t2 = threading.Thread(target=job2)
    t1.start()
    t2.start()
    t1.join()
    t2.join()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值