Python多线程但使用对象实例

弗朗西斯科·阿奎莱拉

我希望你能帮助我。

我有一个msgList包含msg对象的对象,每个对象都有poscontent属性。然后,我有一个函数posClassify,该函数创建一个SentimentClassifier对象,msgList以此对象进行迭代,并msgList[i].pos = clf.predict(msgList[i].content)作为clf的实例SentimentClassifier

def posClassify(msgList):
    clf = SentimentClassifier()
    for i in tqdm(range(len(msgList))):
        if msgList[i].content.find("omitted") == -1:
            msgList[i].pos = clf.predict(msgList[i].content)

我想要的是使用多重处理来计算。我读过您创建一个池,并使用要传递给该函数的参数列表调用函数,仅此而已。我认为该功能必须类似于保存图像或在不同的内存空间上工作,而不像我的那样,您需要在其中修改同一msg对象,并且还必须使用该SentimentClassifier对象(大约需要10秒钟左右的时间)初始化)。

我的想法是在创建cpu_cores-1进程的过程中,每个进程都使用的实例SentimentClassifier,然后每个进程开始使用带有自己的分类器的msg列表进行消费,但是我无法解决该问题。我还考虑过创建带有二进制信号量的线程,每个线程都调用其自己的分类器,然后等待该信号量更新对象中posmsg,但仍无法弄清楚。

Shubham Sharma

您可以在python中使用ProcessPoolExecutorfromfutures模块。

ProcessPoolExecutor

Executor子类使用最多max_workers进程的池异步执行调用。如果max_workers为None或未提供,它将默认为计算机上的处理器数量

您可以在Python文档中找到更多信息

这里是实现并发性的示例代码,假设每个msgList[i]都与msgList[j]when无关i != j

from concurrent import futures

def posClassify(msg, idx, clf):
    return idx, clf.predict(msg.content)

def classify(msgList):
    clf = SentimentClassifier()

    calls = []

    executor = futures.ProcessPoolExecutor(max_workers=4)
    for i in tqdm(range(len(msgList))):
        if msgList[i].content.find("omitted") == -1:
            call = executor.submit(posClassify, msgList[i], i, clf)
            calls.append(call)

    # wait for all processes to finish
    executor.shutdown()

    # assign the result of individual calls to msgList[i].pos
    for call in calls:
        result = call.result()
        msgList[result[0]].pos = result[1]

为了执行代码,只需调用classify(msgList)函数即可。

希望这对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中使用多线程的For Loop对象列表

来自分类Dev

对象和多线程的多个实例的线程安全

来自分类Dev

python中使用并行线程的多线程

来自分类Dev

如何防止多线程操纵引用对象的实例?

来自分类Dev

使用Bitmap对象时,多线程无效

来自分类Dev

提高Python脚本的速度:多线程还是多个实例?

来自分类Dev

提高Python脚本的速度:多线程还是多个实例?

来自分类Dev

使用ThreadPool在Python中进行多线程

来自分类Dev

使用Python和pymongo的多线程

来自分类Dev

Python-在多线程中使用nonce

来自分类Dev

使用python的多线程读写文件

来自分类Dev

使用Python多线程时的属性错误

来自分类Dev

使用Opencv Python多线程录制视频

来自分类Dev

Python,使用Queue进行多线程

来自分类Dev

使用多线程构建python dict

来自分类Dev

多线程实例字段的实现

来自分类Dev

未将多线程代理检查器对象设置为对象的实例

来自分类Dev

多线程Python:线程通信

来自分类Dev

多线程Python:线程通信

来自分类Dev

协助Python多线程

来自分类Dev

Python Webdriver多线程

来自分类Dev

多线程python请求

来自分类Dev

Python多线程方法

来自分类Dev

协助Python多线程

来自分类Dev

Python抓取多线程

来自分类Dev

python多线程性能

来自分类Dev

多线程python请求

来自分类Dev

Python中的多线程

来自分类Dev

Python 优化多线程?