我设置multiprocessing.Queue
代码并行运行2个函数。第一个func解析并将数据写入文本文件,第二个函数从同一文本文件中提取数据并显示实时图形。一旦第一个func创建了一个文本文件,第二个func必须启动。代码效果很好。
然而:
几乎所有的RAM(约6gb),是因为是一个多进程?在任务管理器中我看到3个python.exe进程同时运行2gb,而当我只运行第一个func(消耗最多的RAM)时,我只能看到1个2gb的python.exe。
一旦代码解析了所有文本并且图形停止,进程一直在运行,直到我使用eclipse console红色按钮手动终止代码,这是正常的吗?
我有一个在多进程函数之前和之外运行的小脚本。它提供了我需要定义的值,以便运行多进程函数。它运行正常,但一旦调用了多进程函数,它就会再次运行!!我不知道为什么,因为它绝对不属于多进程功能。
其中一部分已在另一个stackoverflow question中得到解决。
define newlista
define key
def get_all(myjson, kind, type)
def on_data(data)
small script run out of the multi-process function
def parsing(q):
keep_running = True
numentries = 0
for text in get_all(newlista, "sentence", "text"):
if 80 < len(text) < 500:
firstword = key.lower().split(None, 1)[0]
if text.lower().startswith(firstword):
pass
else:
on_data(text)
numentries += 1
q.put(keep_running)
keep_running = False
q.put(keep_running)
def live_graph(q):
keep_running = True
while keep_running:
keep_running = q.get()
# do the graph updates here
if __name__=='__main__':
q = Queue()
p1 = Process(target = writing, args=(q,))
p1.start()
p2 = Process(target = live_graph, args=(q,))
p2.start()
更新
图形函数是生成两个.py进程的函数,一旦第一个函数终止,第二个函数就会继续运行。