这里是一个类似的例子中,使用多代替多线程(用于文档,请参阅the official docs)。多线程处理与多线程非常相似,但它绕过了全局解释器锁定,因此允许您的脚本实际上同时运行不同的进程,并有可能更好地利用有限的计算资源。
进口多为MP
def my_function(*args):
print("Arguments: {0}".format(args))
class MyProcess(mp.Process):
def __init__(self, target, args):
mp.Process.__init__(self, target=target, args=args)
def main():
a1 = MyProcess(target=my_function, args=("1st Process...",))
a2 = MyProcess(target=my_function, args=("2nd Process...",))
a3 = MyProcess(target=my_function, args=("3rd Process...",))
a4 = MyProcess(target=my_function, args=("4th Process...",))
proclist = [a1, a2, a3, a4]
for proc in proclist:
proc.start()
for proc in proclist:
proc.join()
if __name__ == '__main__':
main()
输出:
Arguments: ('1st Process...',)
Arguments: ('2nd Process...',)
Arguments: ('3rd Process...',)
Arguments: ('4th Process...',)
虽然这些排在什么似乎是一组指令,如果添加需要非确定性时间的任务,他们会按照他们完成的顺序进来。只需用您的代码替换my_function
的内容,即可设置。 (注意:这是使用Python 2.在Python 3中,修改很少 - 也许没有修改 - 但是如果你使用Python 3,你也应该调查concurrent.futures
)。
您可以多次运行monitor.py,或者可以使其成为多线程,或者甚至可以派生多个子项。 – 2016-05-12 07:45:15
多线程将是最好的这种情况下 –