import ctypes
|
import logging
|
import mmap
|
import contextlib
|
import multiprocessing
|
import struct
|
import time
|
from multiprocessing import Process, Value, Array
|
import msgpack
|
|
from huaxin_client import l2_data_manager
|
|
|
def run_process_1(arr: Array):
|
while True:
|
try:
|
time_ = time.time()
|
lenth_count = 5
|
raw_data = arr.get_obj()
|
data_lenth = int(bytes(raw_data[:lenth_count]).decode('utf-8'))
|
data = raw_data[lenth_count:data_lenth + lenth_count]
|
data = msgpack.unpackb(bytes(data))
|
print("解码时间", time.time() - time_)
|
if data:
|
print("数据长度", len(data))
|
except Exception as e:
|
logging.exception(e)
|
time.sleep(1)
|
|
|
def run_process_2(arr: Array):
|
data = [('000990', 7.52, 400, 93000030, 2012, 380422, 380421, 375477, '1')]
|
for i in range(0, 100):
|
data.append(data[0])
|
time_ = time.time()
|
str_ = msgpack.packb(data)
|
print("编码时间", time.time() - time_)
|
print("数据长度", len(str_))
|
lenth_count = 5
|
str_lenth = "{0:0>5}".format(len(str_))
|
lenth_bytes = str_lenth.encode('utf-8')
|
arr[0:lenth_count] = lenth_bytes
|
arr[lenth_count:len(str_) + lenth_count] = str_
|
|
|
###########################测试List#####################################
|
def update_value(_shared_list):
|
while True:
|
_shared_list.append([123, "123123", "54677"])
|
time.sleep(1)
|
|
|
def read_value(_shared_list):
|
while True:
|
print(_shared_list)
|
time.sleep(1)
|
|
|
def test_manager():
|
manager = multiprocessing.Manager()
|
# 使用管理器对象创建一个共享列表
|
shared_list = manager.list()
|
p1 = multiprocessing.Process(target=update_value, args=(shared_list,))
|
p2 = multiprocessing.Process(target=read_value, args=(shared_list,))
|
p1.start()
|
p2.start()
|
while True:
|
time.sleep(2)
|
|
|
if __name__ == '__main__':
|
arr = Array('i', range(1024 * 1024))
|
p1, p2 = multiprocessing.Pipe()
|
serverProcess = multiprocessing.Process(target=run_process_1, args=(arr,))
|
jueJinProcess = multiprocessing.Process(target=run_process_2, args=(arr,))
|
serverProcess.start()
|
jueJinProcess.start()
|
|
while True:
|
time.sleep(2)
|
# test_manager()
|