Python:具有 2 个函数的多处理池



我对multiprocessing.Pool()有问题。
我的脚本连接到 websocket 以获取一堆数据。此数据存储在列表中。 我的函数formula()根据不同的所需场景进行计算,并在场景返回 True 时采取行动。
下面我发布了一个简化的代码:

import multiprocessing, time, json
res_array = []
def process_message(msg):
res_array.insert(0, msg)
if len(res_array) > specificnumber:
del res_array[specificnumber:]
#inserts data in a list
def formula(res_array1):
# handles list
def initiate():
ma = SocketManager(client)
conn_key = ma.start_multiplex_socket(listofsockets, process_message)
ma.start()
# starts websocket
if __name__ == '__main__':
p1 = multiprocessing.Process(name='p1', target=initiate())
p2 = multiprocessing.Process(name='p2', target=formula(res_array))
p1.start()
p2.start()

如您所见,我必须调用initiate()才能启动 websocket。 我的计划是在公式同时运行时从 websocket 获取数据。

这段代码运行完美,但速度很慢。为了加快速度,我想尝试multiprocessing.Pool()但我找到的每个示例都只显示使用了一个函数。

问:
如何将 2 个功能分配给一个池?池应同时处理initiate()formula()功能,进程数cpu_count()
这可能吗? 谢谢!

你可以为initiateformula编写一个包装函数:

def intiate_formulate(res_array1):
initiate()
formula(res_array1)

并使用该函数

相关内容

  • 没有找到相关文章

最新更新