python學習作業筆記十一

2021-08-25 08:14:53 字數 2742 閱讀 9429

#!/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 有什麼用途?請用附上 例子佐證 ...