1 Star 0 Fork 1

pish7/stdpython

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
process_client.py 1.86 KB
一键复制 编辑 原始数据 按行查看 历史
pish7 提交于 2023-10-05 21:56 +08:00 . python
import multiprocessing
import multiprocessing.connection
import threading
import queue
import time
import os
# from process_server import *
# 工作线程
class ThreadWork:
#q: 通信队列
#args: 传送到服务器上的元组
def __init__(self, q, args):
self.args = args
self.q = q
self.go = True # 线程退出标识
self.errorCount = 0 # 出错计数
#终止线程
def terminate(self):
self.go = False
#线程函数
def run(self):
while self.go:
try:
#创建客户端,返回一个 Connection
conn = multiprocessing.connection.Client(('127.0.0.1',15000), authkey=b"12345")
conn.send(self.args)
while self.go:
if conn.poll():
data = conn.recv()
conn.close() #关闭通讯
self.q.put(data)
break
break
except multiprocessing.AuthenticationError: #身份验证失败
break
except ConnectionRefusedError: #[WinError 10061] 由于目标计算机积极拒绝,无法连接。
self.errorCount += 1
if self.errorCount < 20:
continue
break
#消费者线程
class ThreadConsumer:
def __init__(self):
self.q = queue.Queue()
self.go = object() #线程退出哨兵
#终止线程
def terminate(self):
self.q.put(self.go)
#线程函数
def run(self):
while True:
txt = self.q.get(block=True)
if txt is self.go:
return
print(txt)
if __name__ == "__main__":
tc = ThreadConsumer()
threading.Thread(target=tc.run, daemon=True).start()
for i in range(10000):
while True:
try:
tw = ThreadWork(q=tc.q, args=(i,i))
threading.Thread(target=tw.run, daemon=True).start()
break
except RuntimeError:
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
pass
input()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/pish7/stdpython.git
git@gitee.com:pish7/stdpython.git
pish7
stdpython
stdpython
master

搜索帮助