python学習ノート01マルチプロセス実装(一)データ転送
2688 ワード
"""
現代のオペレーティングシステムでは、マルチタスクがサポートされています.
マルチタスクって何ですか?
複数のタスクを同時に実行できるオペレーティングシステム
シングルコアCPUは複数のタスク原理を実現する:オペレーティングシステムは順番に各タスクを交互に実行させ、QQは2 usを実行する
微信に切り替える2 us、momoに切り替える2 us...を実行する.
各タスクは繰り返し実行されますが、CPUのスケジューリング実行速度が速すぎて、各タスクが同時に実行されているような気がします.
マルチコアCPUはマルチタスク原理を実現する:
実際のマルチタスクの実行はマルチコアCPUでしか実現できませんが、タスクの数がCPUコアの数よりはるかに多いため、オペレーティングシステムも自動的に複数の
タスクは各コアに順番にスケジュールされます.
同時実行:一緒に実行するように見えるが、タスク数はCPUコア数より多い
並列:実際に一緒に実行し、タスク数はCPUコア数より小さい
マルチタスクを実現する方法:
1、マルチプロセスモード(主)
2、マルチスレッドモード
3、協力モード
4、マルチプロセス+マルチスレッド
マルチプロセス使用:
オペレーティングシステムでは、タスクはプロセスです.
プロセスはシステム内のプログラム実行とリソース割り当ての基本単位であり、各プロセスには独自のデータセグメントがある.
コードセグメント、スタックセグメント
"""
現代のオペレーティングシステムでは、マルチタスクがサポートされています.
マルチタスクって何ですか?
複数のタスクを同時に実行できるオペレーティングシステム
シングルコアCPUは複数のタスク原理を実現する:オペレーティングシステムは順番に各タスクを交互に実行させ、QQは2 usを実行する
微信に切り替える2 us、momoに切り替える2 us...を実行する.
各タスクは繰り返し実行されますが、CPUのスケジューリング実行速度が速すぎて、各タスクが同時に実行されているような気がします.
マルチコアCPUはマルチタスク原理を実現する:
実際のマルチタスクの実行はマルチコアCPUでしか実現できませんが、タスクの数がCPUコアの数よりはるかに多いため、オペレーティングシステムも自動的に複数の
タスクは各コアに順番にスケジュールされます.
同時実行:一緒に実行するように見えるが、タスク数はCPUコア数より多い
並列:実際に一緒に実行し、タスク数はCPUコア数より小さい
マルチタスクを実現する方法:
1、マルチプロセスモード(主)
2、マルチスレッドモード
3、協力モード
4、マルチプロセス+マルチスレッド
マルチプロセス使用:
オペレーティングシステムでは、タスクはプロセスです.
プロセスはシステム内のプログラム実行とリソース割り当ての基本単位であり、各プロセスには独自のデータセグメントがある.
コードセグメント、スタックセグメント
"""
# cc2530 OK
#!/usr/bin/python
# -*-coding: utf-8 -*-
#Time:201807231
#Function:save achieve and savecc2530 data
# wxdial online,and send data to OneNet
#Environment:Raspi3B、cc2530、4G 、USB TTL、4GSIM
#Runing OK
#author@New
# cc2530.txt , ,
# , cc2530.txt, cc2530.txt ,http
# import serial
from multiprocessing import Process, Queue
import time
import os
# from multiprocessing import Process, Queue
# import urllib2
# import json
# import time
# import datetime
def read_serial(read_cc2530_data):
for chr in range(1,10) :
chr = '20180806-23.5-PH06-23'
read_cc2530_data.put(chr)
print('read_serial', chr)
time.sleep(1)
# read_serial data save_cc2530
def save_cc2530(read_cc2530_data):
sensor_data = read_cc2530_data.get()
print('save_cc2530',sensor_data)
# cc2530 data
fileObject = open('G:/cc2530.txt', 'w') # :
fileObject.write(sensor_data)
fileObject.close()
# get_cc2530 OneNet
def http_put(read_cc2530_data):
# cc2530 data
# send_data = read_cc2530_data.get()
# temp = float(file.read()) / 1000
# send_data = float(send_data) / 1000
#
# print("CPU : %.3f" % send_data)
fileObject = open('G:/cc2530.txt', 'r') # :
send_data = fileObject.read()
print('http_put', send_data)
fileObject.close()
if __name__ == "__main__":
# 。,
read_cc2530_data = Queue()
rs = Process(target=read_serial, args=(read_cc2530_data,))
sv = Process(target=save_cc2530, args=(read_cc2530_data,))
hp = Process(target=http_put, args=(read_cc2530_data,))
rs.start()
sv.start()
hp.start()
rs.join()
sv.join()
hp.join()
# while True:
# pass