在Python中将多线程转换为多处理

我如何将这个东西从多线程转换为多处理?使用多线程时,实际上运行速度较慢,而使用的CPU却不多。因此,我希望多处理可能有所帮助。

  def multiprocess(sentences):

     responselist = []

     #called by each thread
     def processfunction(asentence,i):
         pro_sentence = processthesentence(asentence[0],asentence[1],asentence[2],asentence[3],asentence[4],asentence[5],asentence[6],asentence[7],asentence[8])
         mytyple = asentence,pro_sentence
         responselist.append(mytyple)

     # ----- function end --------- #

     #start threading1
     threadlist = []
     for i in range (2):
         asentence = sentences[i]
         t = Thread(target=processfunction, args=(asentence,i,))
         threadlist.append(t)
         t.start()

     for thr in threadlist:
         thr.join()

     return responselist

我尝试了一下(用一个单词替换“ Thread-Process”,但这是行不通的):

  from multiprocessing import Process 

  def processthesentence(asentence):
      return asentence + " done"

  def multiprocess(sentences):

     responselist = []

     #called by each thread
     def processfunction(asentence,i):
         pro_sentence = processthesentence(asentence)
         mytyple = asentence,pro_sentence
         responselist.append(mytyple)

     # ----- function end --------- #

     #start threading1
     threadlist = []
     for i in range (2):
         asentence = sentences[i]
         t = Process(target=processfunction, args=(asentence,i,))
         threadlist.append(t)
         t.start()

     for thr in threadlist:
         thr.join()

     return responselist


  sentences = []
  sentences.append("I like apples.")
  sentences.append("Green apples are bad.")
  multiprocess(sentences) 

尝试了greenevent,但出现了一些错误:

import greenlet
import gevent

def dotheprocess(sentences):

    responselist = []

    #called by each thread
    def task(asentence):
        thesentence = processsentence(asentence[0],asentence[1],asentence[2],asentence[3],asentence[4],asentence[5],asentence[6],asentence[7],asentence[8])

        mytyple = asentence,thesentence
        responselist.append(mytyple)

    # ----- function end --------- #

    def asynchronous():
        threads = [gevent.spawn(task, asentence) for asentence in sentences]
        gevent.joinall(threads)   

    asynchronous()

    return responselist

这是最适合我的方法-不使用它的速度快约50%:

def processthesentence(asentence):
     return asentence

import multiprocessing as mympro 
if __name__=="__main__":
    sentences = ['I like something','Great cool']
    numberofprocesses = 3
    thepool = mympro.Pool(processes=numberofprocesses)
    results = [thepool.apply_async(processthesentence, args=(asent,)) for asent in sentences]
    output = [item.get() for item in results]

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python多处理与多线程结合

来自分类Dev

Python多线程与多处理与顺序执行

来自分类Dev

如何有效地利用多处理和多线程将并行使用python的1000个视频文件转换为音频

来自分类Dev

python中的多处理/多线程下载文件

来自分类Dev

Python多线程和多处理可加速循环

来自分类Dev

使用多处理或多线程来提高Python的抓取速度

来自分类Dev

python中的多处理/多线程下载文件

来自分类Dev

如何实现请求的多线程或多处理

来自分类Dev

多线程/多处理加快抓取

来自分类Dev

BASH中的多处理/多线程

来自分类Dev

多线程是多处理的扩展吗?

来自分类Dev

守护进程行为多处理多线程

来自分类Dev

C 中的多线程与多处理

来自分类Dev

Python多处理/线程清理

来自分类Dev

Python多处理线程池

来自分类Dev

Python中具有多线程/多处理功能的矩阵求和

来自分类Dev

Python Google Sheets APIv4:同时进行多处理和多线程

来自分类Dev

如何使用多线程/多处理并行高效地运行python脚本?

来自分类Dev

在 Python 中进行多线程/多处理时如何避免重复结果?

来自分类Dev

Flask Web服务器的多处理与多线程

来自分类Dev

使用此脚本实现多线程(或多处理?)吗?

来自分类Dev

我如何在C中的多线程程序中将void指针转换为char数组

来自分类Dev

如何转换为多线程子进程

来自分类Dev

如何在Python网络机器人中有效地实现多线程/多处理?

来自分类Dev

python多处理/线程代码提前退出

来自分类Dev

Python多处理比单线程慢

来自分类Dev

C函数的混合线程与python的多处理

来自分类Dev

Python:串行,线程,多处理。最快的方法是?

来自分类Dev

Python多处理:了解线程/ CPU编号

Related 相关文章

热门标签

归档