利用threading Module 撰寫多執行緒程式
簡單的兩執行緒程式
Example Code: 宣告一個返回Fibonacci 數列元素值的子程式, 並讓主執行緒與一個子執行緒分別平行運算該數值五次
thread.py
- from multiprocessing import Process
- import time
- import numpy as np
- def FibonacciN(N):
- Fibonacci=[0,1]
- for i in range(N):
- Fibonacci = np.append(Fibonacci, Fibonacci[-2]+Fibonacci[-1])
- return Fibonacci[-1]
- def MultiJob(): #the function to test the threading
- for i in range(3):
- N=50
- print("parent process:", os.getppid(), " ", 'the elements of Fibonacci is ', FibonacciN(N))
- p1 = Process(target=MultiJob)
- p2 = Process(target=MultiJob)
- p1.start() # start to run the Process P1
- p2.start() # start to run the Process P2
- p1.join()
- p2.join()
- print("Done.")
- from multiprocessing import Process
- import time
- def worker(sign, lock):
- lock.acquire()
- print(sign, os.getpid())
- lock.release()
- record = []
- lock = multiprocessing.Lock()
- for i in range(5):
- process = multiprocessing.Process(target=worker,args=('process',lock))
- process.start()
- record.append(process)
- for process in record:
- process.join()
Note and Comments
- from multiprocessing import Process
- import time
- import numpy as np
- def FibonacciN(N):
- Fibonacci=[0,1]
- for i in range(N):
- Fibonacci = np.append(Fibonacci, Fibonacci[-2]+Fibonacci[-1])
- return Fibonacci[-1]
- def MultiJob(): #the function to test the threading
- for i in range(3):
- N=50
- print("parent process:", os.getppid(), " ", 'the elements of Fibonacci is ', FibonacciN(N))
- p1 = Process(target=MultiJob)
- p2 = Process(target=MultiJob)
- p1.start() # start to run the Process P1
- p2.start() # start to run the Process P2
- p1.join()
- p2.join()
- print("Done.")
result