python 多线程threading程序详情
下面是关于“Python 多线程 threading 程序详情”的完整攻略。
概述
多线程是指在同一时间可以运行多个线程,这样可以使程序的执行更加高效。在 Python 中,多线程通过 threading 模块来实现。threading 模块中的 Thread 类可以创建一个线程对象。
创建线程对象
使用 Thread 类创建线程对象时,需要实现一个 run 方法。在 run 方法中,编写线程要运行的代码。创建线程对象时,调用 start 方法来启动线程。
import threading
import time
class MyThread(threading.Thread):
def run(self):
for i in range(10):
time.sleep(1)
print(f"线程{i}:{time.ctime()}")
if __name__ == "__main__":
t1 = MyThread()
t1.start()
t2 = MyThread()
t2.start()
上述代码中,我们创建了一个 MyThread 类,继承自 threading.Thread 类。重写了 run 方法,用于协调线程执行的任务。在主程序中,我们分别创建了两个线程对象 t1 和 t2,并分别启动。
线程同步
多线程执行时,由于共享同一个资源,就会出现争夺资源的情况,造成代码的不可预测性。这时就需要使用线程同步来解决这个问题。Python 线程的同步是通过 Lock、RLock、Semaphore 等锁来实现的。
import threading
import time
lock = threading.Lock()
g_num = 0
def add_num():
global g_num
lock.acquire()
for i in range(1000000):
g_num += 1
lock.release()
if __name__ == "__main__":
t1 = threading.Thread(target=add_num)
t1.start()
t2 = threading.Thread(target=add_num)
t2.start()
t1.join()
t2.join()
print(g_num)
上述代码中,我们通过 lock 来实现线程同步。因为加锁了,执行时两个线程会依次执行,从而避免了出现数据不同步的问题。
总结
通过使用 Python 的 threading 模块,我们可以很方便地创建和启动多线程程序,提高程序的性能。同时,我们也需要注意线程同步,避免出现资源争夺的情况。实际应用时,也要根据具体情况进行调整和优化。