柯摩的BLOG

Forget before get.


  • 首页

  • 人生小记

  • 关于

  • 标签118

  • 分类10

  • 归档32

  • 运动日记

  • 相册

  • 热门

  • 友链

  • 搜索

高性能分布式计算(HPC)作业1--节点实时通信

发表于 2020-05-13 分类于 Algorithm 阅读次数: 阅读次数: | 字数: 646 评论数:
本文字数: 873 阅读时长 ≈ 1 分钟

分布式计算作业1,socket实时通信。

1️⃣ 作业要求

  • 通信双方使用同一个通信程序;
  • 通信程序有两种启动方式。方式一:启动后创建侦听器,等待连接。方式二:启动是给
    定服务器(处于侦听状态的机器)地址;
  • 首先按方式一启动侦听节点;
  • 然后按方式二启动第二个通信节点,与侦听节点建立连接;
  • 完成连接后,通信双方进入双向通信状态,可以互发文字消息;
  • 任何一方发出“QUIT”消息(大小写不敏感)即终止通信,双方终止程序运行。

    2️⃣ 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import socket  # 客户端 发送一个数据,再接收一个数据
import time
import threading
import ctypes
import inspect
quit = 0


# 终止线程
def _async_raise(tid, exctype):
"""raises the exception, performs cleanup if needed"""
tid = ctypes.c_long(tid)
if not inspect.isclass(exctype):
exctype = type(exctype)
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(
tid, ctypes.py_object(exctype))
if res == 0:
raise ValueError("invalid thread id")
elif res != 1:
# """if it returns a number greater than one, you're in trouble,
# and you should call it again with exc=NULL to revert the effect"""
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
raise SystemError("PyThreadState_SetAsyncExc failed")


def stop_thread(thread):
_async_raise(thread.ident, SystemExit)


def ReceiveMsg(conn):
global quit
while True:
try:
data = conn.recv(1024)
except:
print("连接结束")
conn.close()
break
if str(data.decode()).upper() != 'QUIT':
print('recive:', data.decode())
else:
quit = 1
conn.close()
break


def SendMsg(conn):
global quit
while True:
send = input("send:\n")
try:
conn.send(send.encode('utf-8'))
except:
print("连接结束")
conn.close()
break
if str(send).upper() == 'QUIT':
conn.close()
break

# 改写线程
class msgThread(threading.Thread):
def __init__(self, conn, flag):
threading.Thread.__init__(self)
self.conn = conn
self.flag = flag

def run(self):
if self.flag == 1:
ReceiveMsg(self.conn)
else:
SendMsg(self.conn)

# 声明socket类型,同时生成链接对象
def Client(address):
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
try:
client.connect((address, 6999)) # 建立一个链接,连接到本地的6999端口
break
except:
print("等待侦听!")
time.sleep(1)
Thread_receive = msgThread(client, 1)
Thread_send = msgThread(client, 2)
Thread_receive.start()
Thread_send.start()

def Server():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 6999)) # 绑定要监听的端口
server.listen(5) # 开始监听 表示可以使用五个链接排队
conn, addr = server.accept() # 等待链接,多个链接的时候就会出现问题,其实返回了两个值
print("侦听器已启动!port:6999")
print(conn, addr)
Thread_receive = msgThread(conn, 1)
Thread_send = msgThread(conn, 2)
Thread_receive.start()
Thread_send.start()


if __name__ == "__main__":
BootMode = input("请选择启动方式(1或2):\n")
if BootMode == '1':
Server()
else:
port = input("请输入侦听服务器地址(默认127.0.0.1):\n")
Client(port)
相关文章推荐
  • 高性能分布式计算(HPC)作业2--节点通信,发布计算任务
  • 高性能分布式计算(HPC)作业3--节点通信,发布计算任务,并在计算任务中阻塞
  • 利用Selenium秒填朋友圈各种问卷星调查问卷
  • 从零实现朴素贝叶斯分类器(离散情况)--以学生分班为例
  • 一文解决--matplotlib绘制极坐标热力图并插值优化
喜欢就支持一下吧~
柯摩 微信支付

微信支付

柯摩 支付宝

支付宝

  • 本文作者: 柯摩
  • 本文链接: https://kemo.xyz/高性能分布式计算-HPC-作业1-节点实时通信.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
python distributed system 节点通信 多线程 multithreading socket 分布式
Tweet
Share
Link
Plus
Share
Class
Send
Send
Pin
天池_二手车价格预测_Task_3_特征工程
高性能分布式计算(HPC)作业2--节点通信,发布计算任务
------------- 本 文 结 束 感 谢 您 的 阅 读 -------------
  • 文章目录
  • 站点概览
柯摩

柯摩

真实自有万钧之力
32 日志
10 分类
118 标签
RSS
GitHub E-Mail Weibo QQ Wechat Twitter Bilibili
Creative Commons
  1. 1. 1️⃣ 作业要求
  2. 2. 2️⃣ 代码
0%

Tag Cloud

  • Algorithm1
  • Anaconda31
  • Barrier1
  • BeautifulSoup1
  • BoxPlot1
  • CUDA1
  • CVM1
  • DataMining3
  • Diary5
  • ECS1
  • ESXi3
  • Editor8
  • Go1
  • Hexo1
  • IPFS2
  • IQR1
  • Job1
  • Jupyter3
  • Jupyter Notebook1
  • Lasso正则化1
  • Learning1
  • LightGBM1
  • Linear Regression1
  • Linux8
  • MATLAB1
  • MySQL1
  • Navie Bayes1
  • Next1
  • Nvidia5
  • OJ1
  • Onehot1
  • PaddleOCR1
  • Pandas Head1
  • PySimpleGUI1
  • Pycharm1
  • Python1
  • Pytorch1
  • RTX 2070 Super4
  • Reading1
  • Ridge正则化1
  • SSH1
  • Science Uranology1
  • Searcher1
  • Selenium1
  • Sticker1
  • Study3
  • Thinking2
  • Tianchi3
  • Ubuntu8
  • VMware1
  • X Server1
  • XGBoost1
  • Xftp1
  • Xshell3
  • alive_progress1
  • cross validation1
  • css1
  • cuDNN1
  • custom1
  • distributed system3
  • fan1
  • groupby1
  • matplotlib1
  • multithreading3
  • nvidia-settings1
  • pandas7
  • python9
  • requests1
  • seaborn3
  • set_gpu_fans_public2
  • socket3
  • svm1
  • xorg.conf1
  • 二进制1
  • 五折交叉验证1
  • 内存优化1
  • 决策树1
  • 分布式1
  • 分布式计算2
  • 包裹式(wrapper)1
  • 博客1
  • 反向索引1
  • 回忆1
  • 地铁线路优化1
  • 多层感知机(MLP)1
  • 多线程3
  • 嵌入式(embedding)1
  • 感情1
  • 插值1
  • 数学建模1
  • 日记1
  • 朋友圈1
  • 朴素贝叶斯1
  • 极坐标1
  • 梯度提升树(GBDT)1
  • 正则表达式1
  • 正态分布1
  • 毕业论文1
  • 气象图1
  • 温馨1
  • 热力图1
  • 画图1
  • 目标函数1
  • 真挚1
  • 私有网络1
  • 约束条件1
  • 网格调参1
  • 节点通信3
  • 虚拟机3
  • 调查问卷1
  • 贝叶斯调参1
  • 贪心调参1
  • 过滤式(filter)1
  • 遗传算法1
  • 问卷星1
  • 随机森林1
  • 随笔2
  • 风扇1
© 2015 – 2020 柯摩 | 站点总字数: 162k | 站点阅读时长 ≈ 2:27
全站共 77.3k 字
载入天数...载入时分秒...
皖ICP备 - 19020907 | 苏公网安备 32050802011200号
总访客量 人 | 总访客数 次