Python多程序和多執行緒示例

2021-09-14 03:30:07 字數 1802 閱讀 2209

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 ...