多工 程序

2021-09-29 11:02:55 字數 4147 閱讀 9818

import time

import multiprocessing

deftest1()

:while

true

:print

("1-----"

) time.sleep(1)

deftest2()

:while

true

:print

("2-----"

) time.sleep(1)

defmain()

:# t1 = threading.thread(target=test1)

# t2 = threading.thread(target=test2)

# t1.start()

# t2.start()

p1 = multiprocessing.process(target=test1)

p2 = multiprocessing.process(target=test2)

p1.start(

) p2.start(

)if __name__ ==

"__main__"

: main(

)

import os

import multiprocessing

deftest()

:print

("子程序的pid = %d : 父程序的pid = %d"

%(os.getpid(

),os.getppid())

)def

main()

:# os.getpid獲取當前程序的程序號

# os.getppid獲取父程序的程序號

# 如果已經是父程序,得到系統程序id,如bash環境執行得到bash的id

print

("主程序的pid = %d : 系統程序的pid = %d"

%(os.getpid(

),os.getppid())

) p = multiprocessing.process(target=test)

p.start(

)if __name__ ==

"__main__"

: main(

)

import multiprocessing

import os

deftest

(a, b, c,

*args,

**kwargs)

:print

(a)print

(b)print

(c)print

(args)

print

(kwargs)

defmain()

:print

("子程序的pid = %d : 父程序的pid = %d"

%(os.getpid(

),os.getppid())

) p = multiprocessing.process(target=test,

args=[11

,22,33

,44,55

,66,77

,88],

kwargs=

) p.start(

)if __name__ ==

"__main__"

: main(

)

import multiprocessing

import time

import os

num =[11

,22,33

]def

test1()

:44)print

("在程序中1中num = %s"

%str

(num)

) time.sleep(1)

deftest2()

:print

("在程序中2中num = %s"

%str

(num)

)def

main()

:print

("主程序的pid = %d : 系統程序的pid = %d"

%(os.getpid(

), os.getppid())

) p1 = multiprocessing.process(target=test1)

p2 = multiprocessing.process(target=test2)

p1.start(

)# join([timeout]):是否等待子程序執行結束,或等待多少秒

p1.join(

) p2.start(

)if __name__ ==

"__main__"

: main(

)

import multiprocessing

defdownload_from_web

(q):

data =[11

,22,33

,44]# 向佇列中寫入資料

for temp in data:

q.put(temp)

print()

defanalysis_data

(q):

"""資料處理"""

waitting_analysis_data =

list()

# 從佇列中獲取資料

while

true

: data = q.get(

)if q.empty():

break

# 模擬資料處理

print

(waitting_analysis_data)

defmain()

:# 1. 建立乙個佇列

q = multiprocessing.queue(

)# 2. 建立多個程序,將佇列的引用當作實參傳遞進去

p1 = multiprocessing.process(target=download_from_web, args=

(q,)

) p2 = multiprocessing.process(target=analysis_data, args=

(q,)

) p1.start(

) p2.start(

)if __name__ ==

"__main__"

: main(

)

from multiprocessing import pool

import os

import time

import random

defworker

(msg)

: t_start = time.time(

)print

("%s開始執行,程序號為%d"

%(msg, os.getpid())

)# random.random()隨機生成0~1之間的浮點數

time.sleep(random.random()*

2)t_stop = time.time(

)print

(msg,

"執行完畢,耗時%0.2f"

%(t_stop-t_start)

)def

main()

: po = pool(3)

# 定義乙個程序池,最大程序數3

for i in

range(0

,10):

# 每次迴圈將會用空閒出來的子程序去呼叫目標

(i,)

)print

("----start----"

) po.close(

)# 關閉程序池,關閉後po不再接收新的請求

po.join(

)# 等待po中所有子程序執行完成,必須放在close語句之後

print

("-----end-----"

)if __name__ ==

"__main__"

: main(

)

多工 程序 佇列

程式可以理解為乙個 它是靜態的,儲存在硬碟中,不占用資源,程式執行起來,就是程序,程序消耗資源,占用記憶體中,程序也可以完成多工。程序耗費資源較多。建立程序通過 import multiprocessing p1 multiprocessing.process target p1.start 來建立...

python 多工 程序

什麼是程序?程式是靜態的,當程式執行起來就叫做程序。程序是作業系統分配資源的基本單元。程序 執行緒的區別與優缺點 1.定義的不同 程序是系統進行資源分配的最小單位.執行緒是程序的乙個實體,是cpu進行排程的基本單位。執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源 如程式計數器,一組...

多工原理,執行緒,程序

一.現代作業系統 windows,mac os x,linux,unix等 都支援 多工 二.單任務現象 from time import sleep defrun while true print sunck is a nice man sleep 1.2 if name main while t...