Ava*_*van 2 python multiprocessing
我的程序有两部分分为核心和下载程序.核心处理所有应用程序逻辑,而下载程序只下载URL.现在,我正在尝试使用python多处理模块来完成作为进程的核心任务和作为进程的下载程序.
我注意到的第一个问题是,如果我从核心进程生成下载程序进程,以便下载程序是子进程而核心是父进程,则核心进程(父进程)将被阻塞,直到子进程完成.我不想要这种行为.我希望有一个核心流程和一个下载程序,它们都能够执行代码并在彼此之间进行通信.
例
...
def main():
jobQueue = Queue()
jobQueue.put("http://google.com)
d = Downloader(jobQueue)
p = Process(target=d.start())
p.start()
if __name__ == '__main__':
freeze_support()
main()
Run Code Online (Sandbox Code Playgroud)
其中Downloader的start()只是将url从队列中取出并下载.
为了让2个进程解除阻塞,我是否需要从父进程创建2个进程然后在它们之间共享?
在p = Process(target=d.start())行,你打电话d.start().删除parens,如下所示:
...
def main():
jobQueue = Queue()
jobQueue.put("http://google.com")
d = Downloader(jobQueue)
p = Process(target=d.start)
p.start()
if __name__ == '__main__':
freeze_support()
main()
Run Code Online (Sandbox Code Playgroud)