从多个进程向队列添加数据 - python

我试图多次调用相同的过程并获取回报

from time import sleep
from multiprocessing import Process, Queue
from multiprocessing import Pool

def main():
    #Call processes here.
    var1 = 100000000
    var2 = 1000000
    var3 = 100000

    q = Queue()

    p1 = Process(target=call_pool, args=(q,var1))
    p2 = Process(target=call_pool, args=(q,var2))
    p3 = Process(target=call_pool, args=(q,var3))

    p1.start()
    p2.start()
    p3.start()

    p1.join()
    p2.join()
    p3.join()

    print q.get()    # prints "[42, None, 'hello']"

def call_pool(queue,var):
    #Call pool here
    queue.put(len(pool_gen(var)))


def pool_gen(var):
    pool = Pool()
    data = pool.map(f, range(var))
    return data

def f(x):
    return x*x*x*x

if __name__ == '__main__':
    start = time.time()
    main()
    end = time.time()
    print(end - start)

我认为队列没有添加函数。
我是否需要定义3个队列并将数据放入3倍以上?

参考方案

我猜答案是使用经理。

import time
from time import sleep
from multiprocessing import Process, Manager
from multiprocessing import Pool

def main():
    #Call processes here.
    var1 = 100000
    var2 = 100000
    var3 = 100000

    manager = Manager()
    d = manager.list()

    p1 = Process(target=call_pool, args=(d,var1))
    p2 = Process(target=call_pool, args=(d,var2))
    p3 = Process(target=call_pool, args=(d,var3))

    p1.start()
    p2.start()
    p3.start()

    p1.join()
    p2.join()
    p3.join()

    print d    # prints "[42, None, 'hello']"

def call_pool(d,var):
    #Call pool here
    d.append(len(pool_gen(var)))


def pool_gen(var):
    pool = Pool()
    data = pool.map(f, range(var))
    return data

def f(x):
    return x*x*x*x

if __name__ == '__main__':
    start = time.time()
    main()
    end = time.time()
    print(end - start)

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

我运行带有multiprocessing.Pool()的python代码,所有进程一开始运行良好,但是所有进程都在几个小时后陷入睡眠状态 - python

我使用python 2.7和带有multiprocessing.Pool()的anaconda2运行python代码,并且使用了10个CPU工人。该代码从同一文件读取输入(仅以读取模式打开),并在某些处理后输出一些字符串,并且所有输出均被重定向到bash中带有'>'的同一文件。该代码在centos服务器上运行,并在其中运行许多其他进程。最初,所有过程运…

python-docx应该在空单元格已满时返回空单元格 - python

我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。我在类似的帖子中已经看过scanny提供的其他代码,但是由于某种原因,它并没有提供我正在解析的文档的预期输出可以在https://www.ontario.ca/laws/regulation/140300中找到该文档from docx import Document from…