如何在python中运行本地服务器的多个实例

2024-05-08 17:56:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我下载了离线的zim文档,比如wikipedia.comstackoverflow.comunix.stackexchange.com等网站,并通过下面的脚本为它们提供服务

#!/usr/bin/env python3
import os
import subprocess
import sys
import threading 
from zimply import ZIMServer
ZIMServer("/home/user/zim/wikipedia_en_all_novid_2018-05.zim", index_file="/home/user/zim/wikipedia_en_all_novid_2018-05.idx", port=8790, encoding="utf-8")

它工作得很好,但当我添加另一行

 ZIMServer("/home/user/zim/math.stackexchange.com_eng_all_2018-08.zim",  index_file="/home/user/zim/math.stackexchange.com_eng_all_2018-08.idx", port=7890, encoding="utf-8")

它不加载第二个ZIMServer。我认为这是一个python多线程问题。如何在一个脚本中同时运行它们


Tags: import脚本comhomeindexallwikipediafile
1条回答
网友
1楼 · 发布于 2024-05-08 17:56:43

通过使用multiprocessing — Process-based parallelism,加上端口增量

from multiprocessing import Process

import os
import subprocess
import sys
import threading
from zimply import ZIMServer

def f(port, file, idx):
    ZIMServer(file, index_file=idx, port=port, encoding="utf-8")

if __name__ == '__main__':
    p1 = Process(target=f, args=(8790,"/home/user/zim/wikipedia_en_all_novid_2018-05.zim",""))
    p2 = Process(target=f, args=(8791,"/home/user/zim/whatever.zim",""))
    p1.start()
    p2.start()

相关问题 更多 >