#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @time : 2018/8/20 17:01
# @author :
# 多程序
from multiprocessing import process
import os
# 子程序要執行的**
def run_proc(name):
print("run child process %s ((%s)"%(name,os.getppid()))
if __name__ == '__main__':
print("parent process %s."%os.getpid())
p = process(target=run_proc,args=('test',))
print('child process will start.')
p.start()
p.join() #等待子程序結束後再繼續往下執行,通常用於程序間的同步
print("child process end.")
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @time : 2018/8/20 17:06
# @author :
# 要啟動大量的子程序,可以用程序池的方式批量建立子程序:
from multiprocessing import pool
import os,time,random
def long_time_task(name):
print('run task %s (%s)..'%(name,os.getpid()))
start =time.time()
time.sleep(random.random()*3)
end = time.time()
print('task %s runs %0.2f seconds.'%(name,(end-start)))
if __name__ == '__main__':
print('parent process %s.'%os.getpid())
p =pool(4) # 引數 4表示可以同時跑4個執行緒 可以不賦值 預設cpu核數
for i in range(5):
print('waiting for all subprocess done...')
p.close()
p.join() #對pool物件呼叫join()方法會等待所有子程序執行完畢,呼叫join()之前必須先呼叫close(),呼叫close()之後就不能繼續新增新的process了
print('all subprocess done.')
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @time : 2018/8/20 17:14
# @author :
# 前面講的都是子程序都是自己的** ,很多時候我們都是不同**的程序協同工作
import subprocess
print('$ nslookup www.python.org')
r = subprocess.call(['nslookup', 'www.python.org'])
print('exit code:', r)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @time : 2018/8/20 17:21
# @author :
# 程序之間的通訊 提供了queue、pipes等多種方式來交換資料。
from multiprocessing import process,queue
import os,time,random
# 寫程序執行的**
def write(q):
print('process to write:%s'%os.getpid())
for value in range(ord('a'),ord('d')):
print('put %s to queue...' %chr(value))
q.put(chr(value))
time.sleep(random.random())
# 讀資料程序執行的**
def read(q):
print('process to read: %s' %os.getpid())
while true:
value = q.get(true)
print('get %s from queue.'%value)
if __name__ =='__main__':
# 父程序建立queue 並傳輸給各個子程序
q = queue()
pw = process(target=write,args=(q,))
pr = process(target=read,args=(q,))
# 啟動程序
pw.start()
pr.start()
#等待pw結束
pw.join()
# pr是死迴圈 無法結束 強制結束
pr.terminate()
python學習作業筆記四
usr bin env python coding utf 8 time 2018 8 16 10 20 author 迭代器 可以迭代的資料都可以稱之為iterable物件 可迭代物件 from collections import iterable print isinstance iterab...
python學習作業筆記十四
usr bin env python coding utf 8 time 2018 8 21 13 58 author import re while true 匹配成功 返回乙個match物件 否則返回none r re.match r d d 010 123456 email input 輸入e...
2013 7 15學習作業
題目1 int a 3 a 0 0 a 1 1 a 2 2 int p,q p a q a 2 a q p 的值是多少?為什麼?include using namespace std int main int argc,const char ar 題目2 const 有什麼用途?請用附上 例子佐證 ...