Python多進(jìn)程中如何使用Queue傳輸數(shù)據(jù)
1. 準(zhǔn)備工作打開VMware虛擬化軟件,啟動Ubuntu虛擬機(jī),并登錄系統(tǒng)。在終端中使用gedit工具創(chuàng)建一個名為的文件。2. 編寫代碼骨架在文件中編寫以下代碼:```pythonimport qu
1. 準(zhǔn)備工作
打開VMware虛擬化軟件,啟動Ubuntu虛擬機(jī),并登錄系統(tǒng)。在終端中使用gedit工具創(chuàng)建一個名為的文件。
2. 編寫代碼骨架
在文件中編寫以下代碼:
```python
import queue
from multiprocessing import Process
def readqu(q):
pass
def writequ(q):
pass
if __name__ '__main__':
print('ok')
```
這段代碼只是程序的骨架,定義了讀隊列和寫隊列兩個進(jìn)程,實(shí)現(xiàn)了進(jìn)程間的數(shù)據(jù)傳輸。
3. 驗(yàn)證程序運(yùn)行
在終端中運(yùn)行上一步的代碼:
```
python3
```
如果打印出"ok",則表示程序沒有問題。
4. 創(chuàng)建隊列實(shí)例
接下來我們繼續(xù)編寫代碼,創(chuàng)建一個隊列實(shí)例,并實(shí)現(xiàn)隊列的寫入和讀取操作。
```python
import queue
from multiprocessing import Process
def readqu(q):
print(())
print(())
print(())
def writequ(q):
q.put('abc')
q.put('e')
q.put('f')
if __name__ '__main__':
q queue.Queue()
writequ(q)
readqu(q)
```
盡管以上代碼實(shí)現(xiàn)了隊列的寫入和讀取,但是只有一個主進(jìn)程在運(yùn)行。
5. 多進(jìn)程中使用Queue
我們修改代碼,將寫入隊列和讀取隊列的操作分別放在兩個不同的進(jìn)程中。
```python
from multiprocessing import Process, Queue
def readqu(q):
print(())
print(())
print(())
def writequ(q):
q.put('abc')
q.put('e')
q.put('f')
if __name__ '__main__':
q Queue()
pw Process(targetwritequ, args(q,))
pr Process(targetreadqu, args(q,))
()
()
()
()
print('ok')
```
這里需要特別注意,我們使用了多進(jìn)程導(dǎo)入的Queue。
6. 驗(yàn)證多進(jìn)程數(shù)據(jù)傳輸
在終端中運(yùn)行上一步的代碼:
```
python3
```
如果打印出隊列的內(nèi)容,并且最后打印出"ok",則表示在多進(jìn)程中實(shí)現(xiàn)了數(shù)據(jù)的傳輸。