猿问

python3 多线程问题

如何让多线程的子线程执行完一个再去执行另外一个

for T in range(len(answers)):

submitdata = answers[T]
thread = threading.Thread(target=self.threading_run,args=(T,));
thread.start()

import time, threading

balance = 0
lock = threading.Lock()

def change_it(n):

# 先存后取,结果应该为0:
global balance
balance = balance + n
balance = balance - n

def run_thread(n):

for i in range(100000):
    # 先要获取锁:
    lock.acquire()
    try:
        # 放心地改吧:
        change_it(n)
    finally:
        # 改完了一定要释放锁:
        lock.release()

t1 = threading.Thread(target=run_thread, args=(5,))
t2 = threading.Thread(target=run_thread, args=(8,))
t1.start()
t2.start()
t1.join()
t2.join()
print(balance)
为什么锁会报错,而且,我多线程都用不了了

lock = threading.Lock()

AttributeError: module 'threading' has no attribute 'Lock'

慕容森
浏览 498回答 1
1回答

哆啦的时光机

用threading.Lock锁实现线程同步。 另外遍历一个数组请用for item of arr:遍历,不要用for i in range(len(arr)):
随时随地看视频慕课网APP

相关分类

Python
我要回答