我有两个python脚本,script1.py和script2.py。一个是独立递增int x的计数器,script2.py是每5秒获取int x的值,输入到script2.py中
在单独运行的Python脚本之间传递数据
我为script1应用了While True函数。这是我的尝试,但我不认为我理解一般的想法,我得到了各种错误,因为我是python的新手,我错过了一些细节。
script1.py:
from multiprocessing import Process, Pipe
x = 0
def function(child_conn):
global x
while True:
x += 1
print(x)
child_conn.send(x)
child_conn.close()
script2.py:
from multiprocessing import Proces,Queue,Pipe
from script1 import function
from time import sleep
if __name__=='__main__':
parent_conn,child_conn = Pipe()
p = Process(target=function, args=(child_conn,))
p.start()
print(parent_conn.recv())
time.sleep(5)
提前感谢!
您在子进程中有一个循环,但在父进程中没有循环。如果没有循环,子级只能发送一条消息,然后抛出一个错误。
试试这个代码。运行script2.py启动进程。
script1.py
from multiprocessing import Process, Pipe
from time import sleep
x = 0
def function(child_conn):
global x
while True:
x += 1
print(x)
child_conn.send(x)
#child_conn.close()
sleep(1)
script2.py
from multiprocessing import Process,Queue,Pipe
from script1 import function
from time import sleep
if __name__=='__main__':
parent_conn,child_conn = Pipe()
p = Process(target=function, args=(child_conn,))
p.start()
while True:
print(parent_conn.recv())
sleep(1)