Python执行多线程
时间: 2023-11-05 18:02:12 浏览: 99
python多线程
Python支持多线程,可以使用threading模块来实现多线程。
1. 创建线程
使用threading.Thread()方法来创建线程,需要传入一个函数作为参数,该函数为线程的执行体。
```python
import threading
def print_hello():
print("Hello world!")
t = threading.Thread(target=print_hello)
t.start()
```
2. 线程同步
线程同步是指多个线程在访问共享资源时,需要协调彼此的执行顺序,以避免出现竞态条件。Python提供了Lock、RLock、Semaphore、Condition等多种线程同步机制。
```python
import threading
count = 0
lock = threading.Lock()
def increment():
global count
for i in range(1000000):
lock.acquire()
count += 1
lock.release()
t1 = threading.Thread(target=increment)
t2 = threading.Thread(target=increment)
t1.start()
t2.start()
t1.join()
t2.join()
print("Count: ", count)
```
在上面的例子中,使用Lock来保护共享变量count,防止两个线程同时修改count的值。
3. 线程间通信
在多线程编程中,线程之间需要进行通信,以便协调彼此的执行。Python提供了Queue模块来实现线程间通信。
```python
import threading
import queue
q = queue.Queue()
def producer():
for i in range(10):
q.put(i)
print("Produced:", i)
def consumer():
while True:
item = q.get()
if item is None:
break
print("Consumed:", item)
q.task_done()
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start()
t1.join()
q.put(None)
t2.join()
```
在上面的例子中,使用Queue模块来实现生产者-消费者模式的线程间通信。生产者线程向队列中放入数据,消费者线程从队列中取出数据进行处理。当生产者线程放入None时,表示队列中没有更多数据,消费者线程退出。
阅读全文