multiprocessiong
concurrent.futures
# 直接生成process例項物件
# -*- coding:utf-8 -*-
import multiprocessing
from time import sleep, ctime
defclock
(interval):
i = 0
while i < 5:
print("the time is %s" % ctime())
sleep(interval)
i += 1
if __name__ == '__main__':
p = multiprocessing.process(target=clock, args=(5,))
p.start()
the time is mon jul 2 14:07:34 2018
the time is mon jul 2 14:07:39 2018
the time is mon jul 2 14:07:44 2018
the time is mon jul 2 14:07:49 2018
the time is mon jul 2 14:07:54 2018
# 派生子類
# -*- coding:utf-8 -*-
import multiprocessing
from time import sleep, ctime
class
clockprocess
(multiprocessing.process):
""" 兩個函式比較
1、init建構函式
2、run
"""def__init__
(self, interval):
super().__init__()
self.interval = interval
defrun(self):
i = 0
while i < 5:
print("the time is %s" % ctime())
sleep(self.interval)
i += 1
if __name__ == "__main__":
p = clockprocess(3)
p.start()
the time is mon jul 2 14:08:09 2018
the time is mon jul 2 14:08:12 2018
the time is mon jul 2 14:08:15 2018
the time is mon jul 2 14:08:18 2018
the time is mon jul 2 14:08:21 2018
# -*- coding:utf-8 -*-
from multiprocessing import process
import os
definfo
(title):
print(title)
print("module name:", __name__)
# 得到父程序的id
print("parent process:", os.getppid())
# 得到本身程序的id
print("process id :", os.getpid())
deff
(name):
info('function f')
print('hello', name)
if __name__ == '__main__':
info('main line')
p = process(target=f, args=('whj',))
p.start()
main line
module name: __main__
parent process: 19586
process id : 20428
function f
module name: __main__
parent process: 20428
process id : 20463
hello whj
# -*- coding:utf-8 -*-
import multiprocessing
from time import sleep, ctime
defconsumer
(input_q):
print("into consumer:", ctime())
i = 0
while i < 100:
# 預處理項
item = input_q.get()
print("pull", item, "out of q") # 此項替換為有用的工作
input_q.task_done() # 發出訊號通知任務完成
i += 1
print("out of consumer:", ctime())
defproducer
(sequence, output_q):
print("into producer:", ctime())
for item in sequence:
output_q.put(item)
print("put", item, "into q")
print("out of producer:", ctime())
if __name__ == "__main__":
q = multiprocessing.joinablequeue()
# 執行消費者進行
qc = multiprocessing.process(target=consumer, args=(q,))
qc.daemon = true
qc.start()
# 生產多個項,sequence代表要發給消費者的序列項
# 在實踐中,這可能是生成器的輸出或通過一些其他方法的返回
sequence = [1, 2, 3, 4]
producer(sequence, q)
# 等待所有項被處理
q.join()
# -*- coding:utf-8 -*-
import multiprocessing
from time import sleep, ctime
defconsumer
(input_q):
print("into consumer:", ctime())
while
true:
# 預處理項
item = input_q.get()
if item is
none:
break
print("pull", item, "out of q") # 此項替換為有用的工作
input_q.task_done() # 發出訊號通知任務完成
print("out of consumer:", ctime())
defproducer
(sequence, output_q):
print("into producer:", ctime())
for item in sequence:
output_q.put(item)
print("put", item, "into q")
print("out of producer:", ctime())
if __name__ == "__main__":
q = multiprocessing.joinablequeue()
# 執行消費者進行
qc = multiprocessing.process(target=consumer, args=(q,))
qc.daemon = true
qc.start()
# 生產多個項,sequence代表要發給消費者的序列項
# 在實踐中,這可能是生成器的輸出或通過一些其他方法的返回
sequence = [1, 2, 3, 4, -1]
producer(sequence, q)
q.put(none) # 哨兵值
# 等待所有項被處理
qc.join()
多執行緒 多程序?
這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...
多程序,多執行緒
多工程式設計 通過應用程式利用多個計算機核心達到多工同時執行的 目的,從此來提公升程式執行效率 多程序,多執行緒 程序 程式在計算機中一次執行的過程 程式 靜態的描述,不占有計算機資源 程序 是乙個動態的過程,占有cpu,記憶體等計算機資源 有一定的生命週期 同乙個程式,每次執行都是不同的程序,因為...
多執行緒 多程序
是什麼?能幹什麼?單執行緒情況下,執行效率低。系統的資源沒有得到充分利用。計算密集型 運算量比較大 io密集型 cpu空閒,輸入輸出較多 怎麼幹?爬蟲 io密集型 多執行緒 橫向 所有的程式的執行都在乙個執行緒中,程式啟動時,啟動多執行緒,每個執行緒跑同樣的 縱向 將程式進行拆分,每個執行緒跑特定的...