python多程序之multiprocessing

2022-07-20 05:54:07 字數 3074 閱讀 9820

簡單的理解:單板上執行的乙個程式就是乙個程序。程序是作業系統分配資源的最小單位,不同的程序之間資源不共享,程序間通訊需要使用特定的方式。python提供了自帶的multiprocessing庫,用於多執行緒場景。

import

multiprocessing

import

time

defworker(interval):

while

true:

print("

the time is

".format(time.ctime()))

time.sleep(interval)

if__name__ == "

__main__":

p = multiprocessing.process(target = worker, args = (1,))

p.start()

p.join()

import

multiprocessing

import

time

class

clockprocess(multiprocessing.process):

def__init__

(self, interval):

multiprocessing.process.

__init__

(self)

self.interval =interval

defrun(self):

while

true:

print("

the time is

".format(time.ctime()))

time.sleep(self.interval)

if__name__ == '

__main__':

p = clockprocess(1)

p.start()

p.join()

如果將乙個程序設定為守護程序,那麼當主程序結束時,守護程序也自動結束。

import

multiprocessing

import

time

class

clockprocess(multiprocessing.process):

def__init__

(self, interval):

multiprocessing.process.

__init__

(self)

self.interval =interval

defrun(self):

while

true:

print("

the time is

".format(time.ctime()))

time.sleep(self.interval)

if__name__ == '

__main__':

p = clockprocess(1)

p.daemon = true #

設定子程序為守護程序後,看不到子程序的任何列印

p.start()

print("

main process end

")

如果想主程序等待子程序結束後,使用join即可

import

multiprocessing

defone_task(lock, f):

with lock:

#技巧:使用with後自動獲取鎖和自動釋放鎖

fs = open(f, 'a+'

) n = 10

while n > 1:

fs.write(

"one_task write\n")

n -= 1fs.close()

deftwo_task(lock, f):

lock.acquire()

try:

fs = open(f, 'a+'

) n = 10

while n > 1:

fs.write(

"two task write\n")

n -= 1fs.close()

finally

: lock.release()

if__name__ == "

__main__":

lock =multiprocessing.lock()

f = "

file.txt

"one = multiprocessing.process(target = one_task, args =(lock, f))

two = multiprocessing.process(target = two_task, args =(lock, f))

one.start()

two.start()

one.join()

two.join()

import

multiprocessing

import

time

defwriter_proc(q):

while

true:

q.put(

"message")

time.sleep(1)

defreader_proc(q):

while

true:

print

(q.get())

if__name__ == "

__main__":

q =multiprocessing.queue()

writer = multiprocessing.process(target = writer_proc, args =(q,))

writer.start()

reader = multiprocessing.process(target = reader_proc, args =(q,))

reader.start()

reader.join()

writer.join()

python多程序之程序池

在利用python進行系統管理的時候,特別是同時操作多個檔案目錄,或者遠端控制多台主機,並行操作可以節約大量的時間。當被操作物件數目不大時,可以直接利用multiprocessing中的process動態成生多個程序,十幾個還好,但如果是上百個,上千個目標,手動的去限制程序數量卻又太過繁瑣,此時可以...

python 多程序 之 join

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

Python多程序之Queue管道

from multiprocessing import process,queue 匯入程序的佇列模組,跟執行緒裡的是不一樣 deff q q.put 42,none,hello q.put test if name main 生成乙個佇列,然後將佇列傳給子程序,然後父程序就可以訪問這個子程序操作後...