我有以下代码:
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和/或多线程)?
从我的测试看来,即使第一个语句还没有完全完成,第二个语句似乎也会执行,但我希望合并真正的并发。
非常感谢任何其他建议。
非常感谢提前。
答案 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
,这是一种更方便的解决方案。