如何在Python中使用多線程和多進(jìn)程

小樊
82
2024-05-10 13:48:02

在Python中,可以使用`threading`模塊來(lái)創(chuàng)建和管理多線程,使用`multiprocessing`模塊來(lái)創(chuàng)建和管理多進(jìn)程。

以下是一個(gè)使用多線程的例子:

```python

import threading

def print_numbers():

for i in range(1, 6):

print(i)

thread1 = threading.Thread(target=print_numbers)

thread2 = threading.Thread(target=print_numbers)

thread1.start()

thread2.start()

thread1.join()

thread2.join()

print("Done")

```

在這個(gè)例子中,我們創(chuàng)建了兩個(gè)線程`thread1`和`thread2`,它們都會(huì)調(diào)用`print_numbers`函數(shù)來(lái)打印數(shù)字1到5。然后通過(guò)調(diào)用`start`方法啟動(dòng)線程,最后通過(guò)調(diào)用`join`方法等待線程執(zhí)行完畢。

以下是一個(gè)使用多進(jìn)程的例子:

```python

import multiprocessing

def print_numbers():

for i in range(1, 6):

print(i)

process1 = multiprocessing.Process(target=print_numbers)

process2 = multiprocessing.Process(target=print_numbers)

process1.start()

process2.start()

process1.join()

process2.join()

print("Done")

```

在這個(gè)例子中,我們創(chuàng)建了兩個(gè)進(jìn)程`process1`和`process2`,它們也會(huì)調(diào)用`print_numbers`函數(shù)來(lái)打印數(shù)字1到5。然后通過(guò)調(diào)用`start`方法啟動(dòng)進(jìn)程,最后通過(guò)調(diào)用`join`方法等待進(jìn)程執(zhí)行完畢。

需要注意的是,在使用多線程時(shí),Python的全局解釋鎖(GIL)會(huì)限制同一時(shí)刻只能有一個(gè)線程執(zhí)行Python字節(jié)碼,因此在多核CPU上并不能真正實(shí)現(xiàn)并行執(zhí)行。而在使用多進(jìn)程時(shí),每個(gè)進(jìn)程都有自己獨(dú)立的Python解釋器,因此可以實(shí)現(xiàn)真正的并行執(zhí)行。

0