1. 程式人生 > >python學習作業筆記十五

python學習作業筆記十五

#!/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):
        p.apply_async(long_time_task,args=(i,))
    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: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/20 17:01 # @Author : # 多程序 fr

python學習作業筆記

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/8/20 17:32 # @Author : # 多執行緒

python學習之第課時--存址方式及拷貝

pre env 就是 宋體 spa 基本數據類型 -1 數字 ron 不同數據類型在內存中的存址方式 字符串str,一次性創建,不能被修改,只要有修改字符串,就是在重新創建新的字符串 Python底層是c語言寫的,c語言沒有字符串的說法,字符串是字符數組,所以在內存

python學習第七天:多表查詢

object rim pytho 連表查詢 mit str () tle detail 創建模型 class Book(models.Model): nid = models.AutoField(primary_key=True) name = models

python學習第八天:網絡爬蟲之數據解析方式

數據解析 模式 end 解析 多次 pre 綜合練習 直接 list Python網絡爬蟲之數據解析方式 正則解析 單字符: . : 除換行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一個字符 \d :數字

python學習第九天:linux基礎學習

寫入 tool 時區 and 打開 新版 查看 nal mkdir 裝系統 net.ifnames=0 biosdevname=0 修改系統網絡配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改ip地址的文件

python學習作業筆記

利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法: # 利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()

python學習筆記()-異常處理

nbsp gpo calc pre 異常 AC pan 必須 ror money = input(‘輸入多少錢:‘) months = input(‘還幾個月:‘) try: res = calc(int(money),int(months)) except Ze

Python學習筆記_開發接口

mock con n) clas reg 都是 upper 建立 insert 1、mock接口,模擬一些接口,在別的接口沒有開發好的時候,你需要用它 假的支付接口,模擬支付成功 2、 3、查看數據,避免直接操作數據庫flask web開發框架 實例化server

python筆記(面向對象及其特性)

http 屬性和方法 接口 icm 圖片 post friend his 就是 一、面向對象: class(類):一類擁有共同屬性對象的抽象;定義了這些對象的屬性和方法object(對象):是一個類實例化後的實例,類必須經過實例化才可以在程序中調用; 由於之前學習過java

Java學習筆記:Java中的成員變量和局部變量

auto 描述 nbsp 方法 同名 -a todo generated bsp Java中的成員變量和局部變量 一:成員變量; 成員變量在類中定義,用來描述對象將要有什麽 成員變量可以被本類的方法使用,也可以被其他類的方法使用,成員變量的作用域在整個類內部都是

IOS開發學習筆記 為UITableView控制元件新增Header和Footer

效果圖:專案地址 新增圖片素材,新增plist檔案,新增名為CZGoods的module檔案 @implementation CZGoods - (instancetype)initWithDict:(NSDictionary *)dict { if

ElasticSearch學習筆記 深入檢索

查詢還是過濾 Elasticsearch 的檢索一般來講我們分為2種: 過濾(filtering context)和查詢(query context) 過濾 當使用於 過濾情況 時,查詢被設定成一個 “不評分”或者“過濾”查詢。 即,這個查詢只是簡單的問一個問

機器學習筆記()規則學習

15.規則學習 15.1基本概念 機器學習中的規則(rule)通常是指語義明確、能描述資料分佈所隱含的客觀規律或領域概念、可寫成若…則…形式的邏輯規則。規則學習(rulelearning)是從訓練資料中學習出一組能用於對未見示例進行判別的規則。 顯然,規則集合中的每天

Go語言學習筆記()之異常處理

22.異常處理 error介面定義如下: 1: type error interface { 2: Error() string 3: } Go語言的標準庫程式碼包errors為使用者提供如下方法: 1: package errors 2: 3: type errorStrin

UnityShader入門精要學習筆記():渲染紋理

一.簡介 現代GPU允許我們把整個三維場景渲染到一箇中間緩衝中,即渲染目標紋理(Render Target Texture,RTT)。與之相關的是多重渲染目標(Multiple Render Target,MRT),這種技術指的是GPU允許我們把場景同時渲染到

fs4412開發板學習筆記()

音效卡驅動dts. ====== wm8960:[email protected]1a{ compatible="wlf,wm8960"; reg = <0x1a>; };

斯坦福機器學習公開課筆記()--[應用]照片OCR技術

1、problem description and pipeline(問題描述和流水線) OCR是optical character recognition的縮寫,翻譯過來就是光學字元辨識。照片中的OCR技術其實就是識別中照片中存在的字元,例如下面這幅圖: 關於過程

Java學習筆記 () 自動拆箱與自動裝箱

什麼是自動拆裝箱 自動裝箱: 就是將基本資料型別自動轉換成對應的包裝類. 自動拆箱:就是將包裝類自動轉換成對應的基本資料型別。 For example : Integer a=1; //自動裝箱 int b=a; //自動拆

設計模式學習筆記:裝飾模式(Decorator Pattern)

     1.概述      將表現與邏輯分離,是應用設計的一重要原則,在WEB應用中顯得尤為重要,因為使用者對介面形式的要求是易變的,並且是非常苛刻的。如果應用邏輯與顯示糾纏在一起,就會導致對介面上既是很小的一點改動,都會牽扯到邏輯的變化。在這種情況下,我們可以繼承來擴充套件物件的功能,但是由於繼承為型別