使2个function同时运行

我正在尝试使2个函数在同一时间运行。

def func1(): print 'Working' def func2(): print 'Working' func1() func2() 

有谁知道如何做到这一点?

做这个:

 import threading from threading import Thread def func1(): print 'Working' def func2(): print 'Working' if __name__ == '__main__': Thread(target = func1).start() Thread(target = func2).start() 

关于线程的答案是好的,但是你需要对你想要做的更具体一些。

如果你有两个函数都使用大量的CPU,线程(在CPython中)可能会让你无处可寻。 那么你可能想看看多处理模块,或者你可能想使用jython / IronPython。

如果CPU限制的性能是原因,你甚至可以在(非线程)C中实现东西,并且比在Python中做两个并行的东西获得更大的加速。

没有更多的信息,想出一个好的答案并不容易。

使用threading模块(在这个问题的另一个答案中描述)的方法来
同时运行两个函数似乎工作但实际上有一个小的延迟,如
在官方Python文档中说明 。 尝试更好的解决scheme是使用多处理模块 。

另外,还有一些其他有用的Python模块可以用于asynchronous执行(同时有两段代码)。 有关哪一个是最好select的一些信息,请参阅https://stackoverflow.com/q/2629680/3787376的堆栈溢出问题。

从官方的Python文档引用关于threading module不工作:

CPython实现细节:在CPython中,由于全局解释器locking,只有一个线程可以一次执行Python代码(即使某些面向性能的库可能会克服此限制)。 如果您希望您的应用程序更好地使用多核计算机的计算资源,build议您使用多处理或concurrent.futures.ProcessPoolExecutor。 但是,如果要同时运行多个I / O绑定任务,线程仍然是一个合适的模型。


其他用户对threading module

他可能想知道,由于全局解释器locking,即使有问题的机器有多个CPU,它们也不会在同一时间执行。 wiki.python.org/moin/GlobalInterpreterLock

– 乔纳斯Elfström6年6月2日在11:39

我运行这个代码来检查函数是否在同一时间运行:

 #! /usr/bin/env python import threading from threading import Thread import time def time1(): time.sleep(1) print time.time() def time2(): time.sleep(1) print time.time() if __name__ == '__main__': Thread(target = time1()).start() Thread(target = time2()).start() 

这是它返回的内容:

1447425262.16 1447425263.16

对我来说,这似乎是一个接一个地运行的function…?