从一个Python程序向另一个程序传递值

2024-09-30 22:13:31 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能——除了使用像.txt/伪文件这样的文件——将一个值从一个程序传递到另一个程序?在

我有一个程序,它使用.txt文件将起始值传递给另一个程序。每次运行程序时,我都会更新文件中的值(十次,基本上是同时运行)。这样做很好,但我想让“孩子”程序在完成后向“母亲”程序报告,并报告找到要下载的文件。在

是否可以不使用11个文件(即每个“child”到“mother”报告的实例各一个,以及“mother”到“child”的一个文件)?我说的是完全独立的程序,不是类或函数之类的。在

为了高效地运行,而不是为了所有的事情都要等上好几个小时,我需要“儿童”程序运行十次,让事情更快地完成。因此,我运行子程序十次,并给每个程序一个单独的检查范围。在

两个程序运行良好,但我希望它们能相互运行/报告,希望不要使用文件“传输”来完成任务,尤其是在传输数据的子-母端。在

“母亲”计划…目前

import os
import sys
import subprocess
import time

os.chdir ('/media/')

#find highest download video
Hival = open("Highest.txt", "r") 
Histr = Hival.read()
Hival.close()
HiNext = str(int(Histr)+1)

#setup download #1
NextVal = open("NextVal.txt","w")
NextVal.write(HiNext)
NextVal.close()

#call download #1
procs=[]
proc=subprocess.Popen(['python','test.py'])
procs.append(proc)
time.sleep(2)

#setup download #2-11
Histr2 = int(Histr)/10000
Histr2 = Histr2 + 1

for i in range(10):
    Hiint = str(Histr2)+"0000"
    NextVal = open("NextVal.txt","w")
    NextVal.write(Hiint)
    NextVal.close()

    proc=subprocess.Popen(['python','test.py'])
    procs.append(proc)
    time.sleep(2)
    Histr2 = Histr2 + 1

for proc in procs:
    proc.wait()

“儿童”计划

^{pr2}$

我正在尝试将原来的VB6程序转换为Linux,同时使其更易于使用。因此缺少.mainloop。这是我第一次真正尝试使用Python,因此缺少def或类。我试着在1.5个月后回来完成这件事,主要是因为我不知道怎么做。在不久前的研究中,我发现这是我无法理解的。我从来没有对线程/套接字/客户机/服务器交互做过任何事情,所以在这种情况下我纯粹是个白痴。在上面搜索任何东西,然后我就被带回到stackoverflow。在

是的,我要同时运行10个程序副本,以节省时间。如果程序有可能向“母亲”报告,这样母亲就可以在屏幕上打印当前正在搜索的值,那么我可以不使用gui界面。以及孩子是否可以在完成后报告,是否有成功下载的文件(相比之下,由于文件太小,下载后又被删除)。我会使用成功的下载信息来更新最高.txt下一次运行程序时。在

我认为这可以更好地澄清一些事情…或者我不理解使用服务器/客户机交互的本质:)程序中存在time.sleep的唯一原因是为了确保文件可以在子程序的下一个实例运行之前被写入。我不知道我可能会遇到什么样的时间问题,所以为了安全起见,我把这些线包括在内。在


Tags: 文件import程序txttimedownload报告proc
2条回答

当你谈论使用txt在程序之间传递信息时,我们首先需要知道你使用的是什么语言。 在我所知的Java和Python方面,achi是可行的,尽管这需要大量的信息。在

在python中,可以使用它附带的库来读写txt和调度执行,也可以使用apscheduler。在

这可以通过使用多处理库的简单客户机/服务器拓扑来实现。使用母子术语:

服务器.py

from multiprocessing.connection import Listener

# client
def child(conn):
    while True:
        msg = conn.recv()
        # this just echos the value back, replace with your custom logic
        conn.send(msg)

# server
def mother(address):
    serv = Listener(address)
    while True:
        client = serv.accept()
        child(client)

mother(('', 5000))

客户端.py

^{pr2}$

与…一起跑

$ python server.py
$ python client.py

相关问题 更多 >