1.用程序實現類似定時器的功能
import multiprocessing
import time
def clock(interval):
while true:
print "the time is ".format(time.ctime())
time.sleep(interval)
if __name__ == "__main__":
p = multiprocessing.process(target=clock,args=(3,))
p.start()
p.join()
2.程序的基本程式設計
run:如果在建立process物件的時候不指定target,那麼就會預設執行process的run方法:
#encoding:utf-8
from multiprocessing import process
import os, time, random
def r():
print 『run method『
if __name__ == "__main__":
print "main process run..."
#沒有指定process的targt
p1 = process()
p2 = process()
#如果在建立process時不指定target,那麼執行時沒有任何效果。因為預設的run方法是判斷如果不指定target,那就什麼都不做
#所以這裡手動改變了run方法
p1.run = r
p2.run = r
p1.start()
p2.start()
p1.join()
p2.join()
print "main process runned all lines..."
最上面演示的**中,在呼叫process的start方法後,呼叫了兩次join方法。這個join方法是幹什麼的呢?
官方文件的意思是:阻塞當前程序,直到呼叫join方法的那個程序執行完,再繼續執行當前程序。
比如還是剛才的**,只是把兩個join注釋掉了:
#encoding:utf-8
from multiprocessing import process
import os, time, random
def r1(process_name):
for i in range(5):
print process_name, os.getpid() #列印出當前程序的id
time.sleep(random.random())
def r2(process_name):
for i in range(5):
print process_name, os.getpid() #列印出當前程序的id
time.sleep(random.random())
if __name__ == "__main__":
print "main process run..."
p1 = process(target=r1, args=(『process_name1『, ))
p2 = process(target=r2, args=(『process_name2『, ))
p1.start()
p2.start()
#p1.join()
#p2.join()
print "main process runned all lines..."
python 簡單的程序池
當需要建立的子程序數量不多時,可以直接利用multiprocessing中的process動態成生多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的pool方法。import multiprocessing import os ...
python程序池簡單講解
多程序是是實現多工的一種方法,程序池是實現多程序的一種方法,它可以定義一次可以執行多少個程序。對於知道需要同時執行多少個任務,而且同時執行任務較少 比如 同時執行5個任務 可以直接建立相應數量的程序。但對於所需要程序數量不確定,而且同時執行任務很多的情況下 比如 同時執行1000個任務 你不可能同時...
python 程序鎖和程序池簡單使用
程序鎖 from multiprocessing import process,lock 程序鎖def f l,i l.acquire print hello world i l.release if name main lock lock for num in range 10 process t...