在 python 中并行执行 'N' 个函数
Execute 'N' functions in parallel in python
我知道这个问题已被问过多次,但我找不到对我有帮助的答案。
我的问题是我们能否在 python 中并行执行两个函数,其中每个函数都有一个 for 循环 运行 并打印一些值。例如,我有两个函数 a() 和 b(),其中 a() 打印数字 1..n(比如 n=3),b() 打印数字 11..n(比如 n=13)与当前时间一起。我希望输出类似于:
function a :1 2018-11-02 15:32:58
function b :11 2018-11-02 15:32:58
function a :2 2018-11-02 15:32:59
function b :12 2018-11-02 15:32:59
但它当前打印以下内容:
function a :1 2018-11-02 15:32:58
function a :2 2018-11-02 15:32:59
function b :11 2018-11-02 15:33:00
function b :12 2018-11-02 15:33:01
代码:
import time
from threading import Thread
import datetime
def a():
for i in range(1,3):
print 'function a :'+str(i) + ' ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(1)
def b():
for i in range(11,13):
print 'function b :'+str(i) + ' ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(1)
if __name__=="__main__":
t1=Thread(target=a())
t2=Thread(target=b())
t1.start()
t2.start()
这里的问题是您将 target
作为 a()
而不是 a
(注意括号)。这意味着,您正在调用函数 a
,然后将其结果作为 target
传递给 Thread
。这不是您想要的 - 您希望 target
成为函数 a
本身。因此,在像这样实例化 Thread
时删除括号:
if __name__=="__main__":
t1=Thread(target=a)
t2=Thread(target=b)
t1.start()
t2.start()
我知道这个问题已被问过多次,但我找不到对我有帮助的答案。 我的问题是我们能否在 python 中并行执行两个函数,其中每个函数都有一个 for 循环 运行 并打印一些值。例如,我有两个函数 a() 和 b(),其中 a() 打印数字 1..n(比如 n=3),b() 打印数字 11..n(比如 n=13)与当前时间一起。我希望输出类似于:
function a :1 2018-11-02 15:32:58
function b :11 2018-11-02 15:32:58
function a :2 2018-11-02 15:32:59
function b :12 2018-11-02 15:32:59
但它当前打印以下内容:
function a :1 2018-11-02 15:32:58
function a :2 2018-11-02 15:32:59
function b :11 2018-11-02 15:33:00
function b :12 2018-11-02 15:33:01
代码:
import time
from threading import Thread
import datetime
def a():
for i in range(1,3):
print 'function a :'+str(i) + ' ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(1)
def b():
for i in range(11,13):
print 'function b :'+str(i) + ' ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(1)
if __name__=="__main__":
t1=Thread(target=a())
t2=Thread(target=b())
t1.start()
t2.start()
这里的问题是您将 target
作为 a()
而不是 a
(注意括号)。这意味着,您正在调用函数 a
,然后将其结果作为 target
传递给 Thread
。这不是您想要的 - 您希望 target
成为函数 a
本身。因此,在像这样实例化 Thread
时删除括号:
if __name__=="__main__":
t1=Thread(target=a)
t2=Thread(target=b)
t1.start()
t2.start()