Python如何在同一时间同时运行一个函数n次

时间:2018-02-01 18:54:17

标签: python multithreading concurrency multiprocessing python-multithreading

我想同时运行函数example()n次,没有任何延迟,这个当前脚本能够运行n次,但每次调用之间几乎有几毫秒的差异。我想要同时击中该功能。有没有更好的方法呢? 我过去也使用过多处理程序,但如果运行超过n = 100,它会减慢我的计算机速度。 请提出一个好方法

import threading,argparse,sys,subprocess
from time import strftime
    def example(a):
        time= strftime("%H:%M:%S")
        print("Hello" +a)
        print(time) # It should be same for all n concurrent, since we want all to hit same time

def main(argv):
    parser = argparse.ArgumentParser(description="Hello")
    parser.add_argument("-n", type=str, dest="n")
    parser.add_argument("-a", type=str, dest="a")
    global verbose
    global simulated
    verbose = args.verbose
    n = args.n
    a = args.a

    for counter in range(1, int(n) + 1):
        try:
            t = threading.Thread(name="thread" + str(counter), target=example, args=(a))
            t.start()
        except Exception as e:
            print(e)
if __name__ == '__main__':
    try:
        ret = main(sys.argv[1:])
        sys.exit(ret)
    except Exception as ex:
        print('Error' + str(ex))
        sys.exit(1)

1 个答案:

答案 0 :(得分:0)

您想要同时在多个线程中启动一个函数。我从来没有成功,但一个想法(未经测试)将是 - 你启动所有100个线程(以及你确定启动所有100个线程0.5s的通常时间的选项?) - 在你的线程中,你等待一个信号:a" GO"任何地方或时间/日期存储在文件中的任何位置,这可能是#34;第一个线程的时间开始+ 0.5s"。当线程中的时间满足时,则执行该功能。 由于我不知道线程的内在生命的原因,我不能告诉你,如果它肯定是完全相同的时间。