Python3之多程序join daemon

2021-08-07 09:49:40 字數 1357 閱讀 4233

import os

import time

from multiprocessing import process, joinablequeue

defproducer0

(q):

for i in range(5):

print('%s 生產了 %s' % (os.getpid(), i))

q.put(i)

q.join()

defproducer1

(q):

for i in range(5):

print('%s 生產了 %s' % (os.getpid(), i))

q.put(i)

q.join()

defproducer2

(q):

for i in range(5):

print('%s 生產了 %s' % (os.getpid(), i))

q.put(i)

q.join()

defconsumer

(q):

while

1: res = q.get()

time.sleep(3)

print('%s 消費了 %s' % (os.getpid(), res))

q.task_done()

if __name__ == '__main__':

q = joinablequeue()

p1 = process(target=producer0, args=(q,))

p2 = process(target=producer1, args=(q,))

p3 = process(target=producer2, args=(q,))

p4 = process(target=consumer, args=(q,))

p5 = process(target=consumer, args=(q,))

p_l = [p1, p2, p3, p4, p5]

# p4.daemon = true

# p5.daemon = true

''' 理解下面的迴圈,迴圈開啟列表的子程序,當呼叫p.join()時,

主程式被掛起,迴圈被暫停,等待子程式執行結束後迴圈才能繼

續執行,這個相當於序列'''

for p in p_l:

p.start()

p.join()

# for p in p_l:

# p.join()

# p1.join()

# p2.join()

# p3.join()

print('主程序')

python之多程序

要讓python實現多程序 multiprocessing 我們先來了解作業系統相關知識。unix 和 linux 作業系統提供了乙個 fork 函式系統呼叫,它非常特殊。普通的函式,呼叫一它次,執行一次,但是 fork 函式呼叫一次執行兩次,因為作業系統自動把當前程序 稱為父程序 複製了乙份 稱為...

python 多程序 之 join

今天一大早起床,又學三個臭函式,記錄一下自己渺小微弱的學習之路 有時候join 我們是用來連線字串的,但就在今天我學習程序的時候,看見join 居然不是用來連線字串了,而是用來阻塞程序,興趣大增,便深入了解了一下,join 的作用 在程序中可以阻塞主程序的執行,直到等待子執行緒全部完成之後,才繼續執...

python併發之多程序

一 multiprocessing模組介紹 python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源 os.cpu count 檢視 在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在...