如何将当前的 python 程序转换为多处理/多线程



很抱歉问这个问题作为一个新的python初学者,我有一个工作的python程序要转换为多处理或多线程,这是工作py的结构:

class XMLToJson():
def __init__(self, region=None, flow=None, path=None, output=None):
def run(self):
def run_from_cmd():
XMLToJson().run()
if __name__ == '__main__':
XMLToJson().run()

如果有人能告诉我如何进行转换,将不胜感激。

谢谢。

附言

以下是我正在考虑如何适应它的框架:

from threading import Thread, current_thread, Lock
import time

def worker(l):
while True:
l.acquire()
print ('in worker:' + str(current_thread()))
l.release()
time.sleep(0.5)

if __name__ == '__main__':
l = Lock()
print ('in main: ' + str(current_thread()))
threads = [Thread(target=worker, args=[l]) for i in range(5)]
for t in threads:
t.start()
for t in threads:
t.join()

我将原始工作程序从 run(( 修改为 main_process((,并将目标从 worker 设置为 main_process,

if __name__ == '__main__':
l = Lock()
print ('in main: ' + str(current_thread()))
threads = [Thread(target=main_process, args=[l]) for i in range(5)]
for t in threads:
t.start()
for t in threads:
t.join()

但是程序甚至没有通过编译,在 target=main_process 中出错。

谢谢。

你的问题缺乏相当多的细节。你的程序在做什么?为什么要多进程/线程?您的输入/输出是什么?多进程/多线程有什么?

如果您拥有的是执行input => transform => output和终止的脚本,则多处理/线程只是同时处理多组输入以节省时间的一种方式。在这种情况下,您可以使用每组输入多次调用脚本,或者将多输入传递给多线程脚本的单个实例,例如binge库(pip install binge(来处理多处理:

from binge import B
result = B(worker, n=5)(....)

其中worker是你的转换函数,n 是它应该发生的次数,....你的输入被发送到 5 个并行工作线程实例 - 请注意,如果你有 n=5,那么你的输入应该是长度 5(分布在工作线程上(,或者 1(给每个工作线程相同(。

CF:狂欢文档

相关内容

  • 没有找到相关文章

最新更新