Python线程在同一时间做了一些事情

时间:2017-05-23 13:49:54

标签: python multithreading request

是否有可能在Python中有2个,3个或更多线程能够同时执行某些操作 - 在同一时刻?是否有可能其中一个线程迟到,另一个线程等待它,所以最后一个请求可以同时执行?

示例:有两个线程正在计算特定参数,完成后他们需要同时单击一个按钮(将发送请求发送到服务器)。

1 个答案:

答案 0 :(得分:1)

“完全相同的时间”真的很难,几乎在同一时间是可能的,但你需要使用multiprocessing而不是线程。这是一个例子。

from time import time
from multiprocessing import Pool


def f(*args):
    while time() < start + 5: #syncronize the execution of each process
        pass
    print(time())

start = time()

with Pool(10) as p:
    p.map(f, range(10))

打印

1495552973.6672032
1495552973.6672032
1495552973.669514
1495552973.667697
1495552973.6672032
1495552973.668086
1495552973.6693969
1495552973.6672032
1495552973.6677089
1495552973.669164

请注意,某些过程实际上是同步的(以10e-7秒的精度)。不可能保证所有进程都会在同一时刻执行。 但是,如果您将进程数限制为实际拥有的核心数,那么大部分时间它们将在同一时刻完全运行。