Python 3中,694个 691字节
main.py
from requests import post as u
from _thread import*
import os
os.system("start cmd /C python s")
def l():
def p(q):
while 1:print(u(*q).text,end="\r")
q=['http://localhost']
q+=[u(q[0],'*').text]
start_new_thread(p,(q,))
input()
u(q[0],'-'+q[1])
while 1:
try:l();break
except:0
s(server.py的缩写)
from bottle import*
from requests import post as q
try:
q("http://localhost")
except:
ids=["0"]
@post('/')
def _():
content = request.body.read().decode('utf-8')
if len(content)==0:return""
if content[0]=="*":ids.append(str(int(ids[-1])+1));return str(ids[-1])
elif content[0]=="-":del ids[ids.index(content[1:])]
else:return str(ids.index(content)) + "/" + str(len(ids)-1)
run(port="80")
为什么这么久?
不幸的是,该功能似乎并未内置在Python中。我很想使用多重处理,但这似乎并不适合我们正在做的事情(让用户从任何地方打开程序)。
因此,我接受了我所看到的StackOverflow帖子的建议(我放错了链接),并使用实现了它bottle
。(我愿意接受新的建议)。
我使用了Bottle库来运行自己的微型http服务器,以便所有不同的实例都可以相互通信。我想我可以使用一个套接字,尽管我不相信这样做会减少字节数。
我有两个单独的文件,s
和main.py
。 s
缺少服务器,并且因为它出现在代码中,所以我认为我应该使名称尽可能短。
通讯Web服务器的API
Web服务器仅接受POST请求,并且仅响应POST正文中的输入。
所有请求都通过/
(或localhost/
)。
有效输入:
*
帖子正文中的,将请求服务器返回新ID来分配客户端。
-<id>
帖子正文中的ID将从ID的活动列表中删除ID,从而减少所有相关ID和总数。
- 帖子正文中的空请求将仅返回一个空字符串。这是用于测试服务器是否在线的测试工具。
关闭程序
我实现了多线程,因此关闭程序就像按Enter一样简单。
打开程序
如果你没有正确的有你的环境变量中Python安装只需创建一个.bat
文件,并把它放在同一个文件夹main.py
,并s
用下面的代码(如果您为所有用户安装了Python,它可能是在不同的位置):
set PATH=%userprofile%\AppData\Local\Programs\Python\Python36
python main.py
学分
从694到691字节Adám。