Python,在后台运行一个进程,并从主线程获取状态
这是一个noob问题,我从来没有在Python中做过很多工作。我需要一个主进程运行并执行一些操作,而后台进程执行其他计算并将结果保存到变量中。当主线程需要时,它应该能够读取存储在变量中的最后一个值:之前存储的每个值都会被遗忘。假设后台进程正在计数:我想知道此刻的数字是多少。这是一个伪代码:Python,在后台运行一个进程,并从主线程获取状态,python,multiprocessing,Python,Multiprocessing,这是一个noob问题,我从来没有在Python中做过很多工作。我需要一个主进程运行并执行一些操作,而后台进程执行其他计算并将结果保存到变量中。当主线程需要时,它应该能够读取存储在变量中的最后一个值:之前存储的每个值都会被遗忘。假设后台进程正在计数:我想知道此刻的数字是多少。这是一个伪代码: from multiprocessing import Process, Pipe import os import time def f(queue): a=0 while True:
from multiprocessing import Process, Pipe
import os
import time
def f(queue):
a=0
while True:
a=a+1
child_conn.send(a)
time.sleep(0.1)
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
time.sleep(1)
while True:
print(parent_conn.recv())
time.sleep(1)
因此,主线程每秒打印背景线程的变量,该变量每秒更新10次。
我尝试使用管道和队列,但没有得到最后存储的变量。该输出为1,2,3,4,。。。虽然我想得到10,20,30,。。。(或类似,取决于时间)。这里的问题是,顾名思义,它是一个队列
我在java中要做的是创建一个类似asynctask的东西,并让它更新一个公共变量,但我的理解是多进程不能共享变量
用Python做这件事的正确方法是什么 使用,通过进程之间的共享内存实现:
from multiprocessing import Process, Value
import time
def f(n):
while True:
n.value += 1
time.sleep(0.1)
if __name__ == '__main__':
n = Value('i',0)
p = Process(target=f, args=(n,))
p.start()
while True:
time.sleep(1)
print(n.value)
输出:
7
17
26
35
44
53