下面是关于“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 模块,我们可以很方便地创建和启动多线程程序,提高程序的性能。同时,我们也需要注意线程同步,避免出现资源争夺的情况。实际应用时,也要根据具体情况进行调整和优化。