1.多程序(執行效率與cpu核數直接相關)
from multiprocessing import pool, manager
import os, time, random
#多程序執行的任務
def task(m_list):
print('run task pid %s...' % ( os.getpid()))
for i in range(5):
print(m_list)
if __name__=='__main__':
start_time = time.time()
print('parent process %s.' % os.getpid())
p = pool()
#manager支援的型別有list,dict,namespace,lock,rlock,semaphore,boundedsemaphore,condition,event,queue,value和array
m = manager() # 建立共享list
m_list = m.list()
# for i in range(multiprocessing.cpu_count()): # 根據cpu核數建立程序
for i in range(5):
print('waiting for all subprocesses done...')
p.close()
p.join()
print('all subprocesses done.')
end_time = time.time()
print('use time: '.format(end_time - start_time))
2.多執行緒(python中的多執行緒由於gil的原因,並不會提公升效率)
import threading
import time
#執行緒class threadimpl(threading.thread):
def __init__(self, num):
threading.thread.__init__(self)
self._num = num
def run(self):
global total, mutex
# 列印執行緒名
print(threading.currentthread().getname())
# 取得鎖
mutex.acquire()
for x in range(0, int(self._num)):
total = total + 1
time.sleep(0.01)
print(total)
# 釋放鎖
mutex.release()
if __name__ == '__main__':
#定義全域性變數
global total, mutex
total = 0
# 建立鎖
mutex = threading.lock()
#定義執行緒池
threads =
# 建立執行緒物件
for x in range(4):
# 啟動執行緒
for t in threads:
t.start()
# 等待子執行緒結束
for t in threads:
t.join()
# 列印執行結果
print('total: '.format(total))
python 多執行緒 和 多程序
單執行緒例子 usr bin python coding utf 8 name danxiancheng.py import time import threading def loop num,sec print loop s start num,time.strftime y m d h m s...
python多執行緒和多程序
pool 感謝多執行緒和多程序最大的不同在於,多程序中,同乙個變數,各自有乙份拷貝存在於每個程序中,互不影響 而多執行緒中,所有變數都由所有執行緒共享,所以,任何乙個變數都可以被任何乙個執行緒修改,因此,執行緒之間共享資料最大的危險在於多個執行緒同時改乙個變數,把內容給改亂了。python中,多執行...
多程序和多執行緒python
coding utf8 import threading import time class mop floor threading.thread def init self super mop floor,self init def run self print 我要拖地了 time.sleep ...