多处理和多线程的简单示例

时间:2015-07-30 16:05:54

标签: python multithreading multiprocessing

我有以下代码:

class SplunkUKAnalyser(object):

    def __init__
    def method1
    def method2
    def method2
    ...

class SplunkDEAnalyser(SplunkUKAnalyser):

    def __init__    (Over-ridden)
    def method1     (Over-ridden)
    def method2
    def method2
    ...

perform_uk_analysis():
    my_uk_analyser = SplunkUKAnalyser() 

perform_de_analysis():
    my_de_analyser = SplunkDEAnalyser()

如果我执行以下操作,一切正常:

perform_uk_analysis()
perform_de_analysis()

如何才能使它们同时执行最后两个语句。 (使用mutliprocessing和/或多线程)?

从我的测试看来,即使第一个语句还没有完全完成,第二个语句似乎也会执行,但我希望合并真正的并发。

非常感谢任何其他建议。

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

由于GIL (Global Interpreter Lock),您无法实现真正​​的并发性'与threading

但是,使用multiprocessing同时运行多个任务非常简单:

import multiprocessing

process1 = multiprocessing.Process(target=perform_uk_analysis)
process2 = multiprocessing.Process(target=perform_de_analysis)
# you can optionally daemoize the process
process2.daemon = True
# run the tasks concurrently
process1.start()
process2.start()
# you can optionally wait for a process to finish
process2.join()

对于使用不同参数运行相同功能的任务,请考虑使用multiprocessing.Pool,这是一种更方便的解决方案。